【问题标题】:SpriteKit SKScene missing touchesEndedSpriteKit SKScene 缺少触摸已结束
【发布时间】:2013-11-10 11:27:01
【问题描述】:

我注意到 touchesEnded 并不总是通过多点触控传递到 SKScene。根据移除手指等的速度,我会永久错过一些 touchesEnded。 touchesCancelled 已实现,我添加了一个自定义 UIView 并放在屏幕左侧 - 没问题。我制作了一个自定义 SKView 并捕获了事件 - 再次没问题。

很明显 SKScene 没有得到所有的触摸结束了它嵌入的 SKView,但是为什么呢?

(顺便说一句,我正在完全运行 SKScene,没有任何节点)

编辑:

一些进一步的调查显示我可以让 SKScene 完全失去联系:

我将 3 根手指放在显示屏上,然后一次取出一根,直到只有一根手指接触。我移动手指-> 只有 SKView 接收移动事件,SKScene 没有。它也不会收到 touchesEnded。

经过一些实验,我可以说当 touchesBegan 在通话中收到超过 1 次触摸时会发生这种情况(例如,您“同时”按下两根手指)。然后这两个触摸会纠缠在一起,因此只有其中一个会发送事件。

这似乎是 SKScene 中的一个错误。我正在 iPhone 5 上进行测试。它会

【问题讨论】:

  • 任何手势识别器正在运行?启用多点触控?收到多次触摸以单个事件结束?
  • @LearnCocos2D 没有手势识别器(只是运行一个普通的 SKScene 作为测试),启用了多点触控。我在一次 touchesBegan 中获得了多次触摸,并且我还列出了事件中的其他触摸。当我检测到后来的 touchesEnded 时,丢失的触摸会从 allTouches 中消失。

标签: ios sprite-kit touches uiresponder


【解决方案1】:

您可能正在使用一些手势识别器吗? 它们具有 cancelsTouchesInView 属性,其默认值为 YES。 将其更改为 NO 解决了我的问题。

【讨论】:

  • 不,我做了一个完全空白的视图来测试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-26
相关资源
最近更新 更多