【问题标题】:Detect when there are no more touches without counting检测何时不再有触摸而不计数
【发布时间】:2015-10-03 13:48:57
【问题描述】:

我正在尝试检测屏幕上不再有触摸的点。

我已经尝试通过在 touchesbegan 和 touchesended 中计数来保持触摸总数 - 但是,由于我不可避免地必须在超级视图和子视图中处理触摸,因此调用这些方法时的行为不会成功可能的(例如,如果用户触摸然后从子视图滑出,然后又回到同一个子视图,则在滑上时调用 touchesBegan,但在滑下时不调用 touchesEnded)。

有没有人有可靠的方法来检测屏幕上什么时候没有触摸?

非常感谢!

D

【问题讨论】:

  • 为什么不在顶部放置一个透明视图,覆盖所有子视图,并在所有手指离开屏幕时可靠地告诉你?
  • 谢谢 - 但我不明白它是如何工作的。如果我将视图放在顶部,即使它在视觉上是透明的,它不会拦截所有触摸 - 这意味着我无法处理子视图级别的触摸?

标签: ios uiview uitouch


【解决方案1】:

在顶部放置一个透明视图,并让它检查是否仍有触摸正在进行。它应该覆盖所有子视图,因此移入或移出子视图的触摸不会创建人为的touchesBegan 调用。跟踪触摸并且不要错过最后一次touchEnded 呼叫:这将告诉您所有手指现在都离开了屏幕。

如果您的其他视图不再收到触摸,请务必致电super touchesBegan/Moved/Ended。请参阅here 以获得很好的解释。

【讨论】:

  • 我看不到任何构造视图的方式,以便在调用 super 时,我的子视图顶部的视图将向子视图发送触摸事件。调用 super 会将事件发送到超级视图,我的所有子视图都不能成为新顶视图的超级视图。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-03
  • 1970-01-01
  • 1970-01-01
  • 2022-10-14
  • 1970-01-01
相关资源
最近更新 更多