【问题标题】:How to detect touch on screen in custom UIView?如何在自定义 UIView 中检测屏幕上的触摸?
【发布时间】:2013-12-02 17:05:27
【问题描述】:

我想在我的UIView 子类中查看用户在屏幕上的触摸。特别是还有一些附加条件:

  • 触摸不应该被我的视图捕捉到(例如,如果用户点击某个按钮或滚动应该接受的操作)
  • 可能有多个视图正在监视触摸,它们不应相互冲突
  • 方法应尽可能通用(以便我们可以捕捉标签栏或导航按钮上的点击)

我可以假设使用自定义的hitTest: 方法添加特定的全屏视图。此视图具有添加/删除代表以监视触摸的界面。但是这种方法在编码方面“很难”,我想找到更优雅、更简单的解决方案。

【问题讨论】:

  • 您应该能够使用UITouch 上的locationInView 函数来判断触摸是否在某个视图的边界内。 UITouch locationInView:
  • 问题不在于触摸位置...
  • 我知道不是,但您可以使用它来确定视图是否应该处理它

标签: ios uiview touch hittest


【解决方案1】:

您可以在 UIView 子类中编写 touchesBegan。

因为如果它有任何像按钮或滚动视图这样的子视图,它们将是第一响应者,并且滚动视图上的触摸不会触发你的 UIView 子类的 touchesBegan。

并且它不会与其他触摸监听器冲突,除非监听器 subView 明确地将触摸传递给您的子类。

【讨论】:

  • 这些子视图也需要观看超出其范围的触摸。目前,我使用hitTest: 使用额外的全屏视图,但正如我所提到的,这不是优雅的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-13
相关资源
最近更新 更多