我注意到 touchesEnded 并不总是在多点触控时传送到 SKScene。根据移除手指等的速度,我会永久错过一些 touchesEnded。 touchesCancelled 已实现,我添加了一个自定义 UIView 并放在屏幕左侧 - 没问题。我制作了自定义 SKView 并捕获了事件 - 再次没问题。
很明显,SKScene 没有得到它嵌入的 SKView 的所有 touchesEnded,但为什么呢?
(顺便说一句,我在没有任何节点的情况下完全运行 SKScene)
编辑:
一些进一步的调查显示我可以让 SKScene 完全失去联系:
我将 3 根手指放在显示屏上,然后一次移开它们,直到只有一根手指接触。我移动手指 -> 只有 SKView 收到移动事件,SKScene 没有。它也不会收到 touchesEnded。
经过一些实验后,我可以说当 touchesBegan 在通话中收到超过 1 次触摸时(例如,您“同时”按下两根手指),就会发生这种情况。然后这两个触摸会纠缠在一起,因此只有其中一个会发送事件。
这似乎是 SKScene 中的错误。我正在 iPhone 5 上进行测试。它会
最佳答案
可能您正在使用一些手势识别器? 它们具有属性 cancelsTouchesInView,默认值为 YES。 将其更改为 NO 解决了我的问题。
关于ios - SpriteKit SKScene 缺少 touchesEnded,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19689885/