Двойной тап iOS 9 Spritekit не работает на iPhone 6S

Я уже некоторое время создаю игру SpriteKit. Это карточная игра, которая позволяет дважды нажимать на карточных спрайтов для определенного поведения. Теперь, когда мы находимся в iOS 9, двойные касания не работают вообще на iPhone 6s. Отлично работает на 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 ответа

Решение

Согласно 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 fps через skView.showsFPS = YES;Бег очень вялый. Я только что обнаружил, что я могу заставить работать отводы, если я нажимаю медленно, как в ожидании целой секунды между первым и вторым отводом.

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

Другие вопросы по тегам