我在iOS上使用60fps的赛车游戏。游戏由左右两个拇指控制。右边用于转向(用touchesMoved滑动手指),左边是保持和释放升力(保持约一秒然后释放)。
有一段时间,我得到了左触摸根本没有注册的错误...当我触摸,移动或释放左边时,我不会触摸触摸,触摸移动,触摸触摸或触摸取消手指。但是,如果我在左手触摸仍然存在时松开右手指(转向手指)并且骚扰(没有左手指事件被调用),我会触摸触摸以获得正确的手指触摸......非常奇怪!
95%的时间,一切正常,左/右都按预期按时生成事件。该错误只发生在大约5%的时间,而且非常随机。
以下是详细步骤中的错误情景:
1-右手指已经触摸(在右下角)并且用TouchesMoved操纵游戏。
2-左手触摸左下角,但触摸发生时没有调用TouchesBegan。
3-右手移动仍然按预期正确注册TouchesMoved。
4-左手移动并不会记录任何东西,就好像它不存在一样。
5A-首先移除左手指不会注册TouchesEnded或TouchesCancelled。之后移除右手指按预期正常注册TouchesEnded。
或
5B-首先移除右手指会导致调用TouchesCancelled。之后,移除左手指没有任何作用,就像没有触摸那样。
我有一个使用OpenGL的全屏UIView。视图和窗口都启用了多点触控,没有注册任何手势(除非有一些默认手势?)
我正在iPhone5上对iOs 7.1.1进行测试。
我还注意到CPU负载没有什么区别,有时当CPU负载很高时有时会出现错误,有时它没有内存警告或内存过载。
希望有iOS经验的人可以解决这个谜团。