iOS 9 Spritekit Double Tap не работает на iPhone 6S


Я уже некоторое время строю игру SpriteKit. Это карточная игра, которая позволяет дважды нажать на карточные спрайты для определенного поведения. Теперь, когда мы в iOS 9, двойные краны, не работает на 6С. Отлично работает на iOS8, все устройств.

В моем SKScene, я использую метод touchesBegan для обнаружения отводов:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    CGPoint touchLocation = [touch locationInNode:self];

    if(touch.tapCount==2) {
        NSLog(@"double-tap, but not for iPhone 6s");
    }
}

Есть ли что-нибудь новое с iOS9 или 6s специально (3d touch?) что нужно реализовать сейчас для игр SpriteKit?

Я хотел бы отметить, что это прекрасно работает в симуляторе iPhone 6s, но не на самом устройстве.

Также, touch.tapCount сообщит 3, 4, 5, 6, 7 и т. д. краны, но полностью пропускает только второй кран.

2 4

2 ответа:

Согласно https://developer.apple.com/library/prerelease/ios/releasenotes/General/RN-iOSSDK-9.1/

UIKit
Note
On 3D Touch capable devices, touch pressure changes cause 
touchesMoved:withEvent: to be called for all apps running on iOS 9.0. 
When running iOS 9.1, the method is called only for apps 
linked with the iOS 9.0 (or later) SDK.

Apps should be prepared to receive touch move events 
with no change in the x/y coordinates.

Так что если эта проблема может быть вызвана touchMoved.

Хорошо, значит, двойные краны работают, вроде того. На iPhone 6s игра, хотя и сообщает 60 кадров в секунду через skView.showsFPS = YES;, работает очень медленно. Я только что обнаружил, что могу заставить краны работать, если я стучу медленно, как в ожидании целую секунду между первым и вторым краном.

Теперь о том, почему эта игра так медленно работает на этом устройстве. Это даже не проблема iOS 9, потому что игра отлично работает на моем 5s w / iOS 9.