I have recently send out a version of my game to TestFlight for internal testing. My friend noticed that on his iPhone 6S Plus the controls to shoot do not work correctly.
The controls are as follow
1) left half of screen = jump
2) right half of screen = shoot
3) Slide and hold on right half of screen = start slow motion
Now in my touches began method I have a slight delay for the shooting, so if touches moved is called it cancels the shooting and starts slow mo. This seems to be causing the problem on 3D Touch enabled phones.
Digging further into this I came across this post
iOS 9 Spritekit Double Tap Not Working on iPhone 6S
where it basically states that on 3D Touch enabled devices the touches moved method gets called automatically.
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. "
This seems to make sense of why my friend has problems, if touches moved is always called it will cancel the shooting and start slow mo, even though he is not sliding on the screen.
So my questions is
1) Can you disable 3D Touch in SpriteKit games?
2) Is this a bug?
3) any other way to use touches moved correctly on 3D Touch devices?
4) alternatively can I use gesture recognisers to simulate a slide and hold feature that I am currently doing in touches moved.
Thanks for any help