【问题标题】:UIResponder vs UIGestureRecognizer for Touch Event Response用于触摸事件响应的 UIResponder 与 UIGestureRecognizer
【发布时间】:2013-02-11 01:10:47
【问题描述】:

我一直在研究各种方法来为我正在构建的应用程序对触摸事件的响应进行编程,但我对我正在阅读的内容有点困惑。

据我所知,iOS 中有两种普遍接受的响应触摸的方法:手势识别和触摸识别。

什么时候适合使用其中一个?

专门针对我正在构建的内容*:

我正在为需要在用户触摸的屏幕上放置项目(UIImageViews)并在用户拖动时移动它们的视图编写控制器。控制器正在与单独的模型通信,因此我需要精细控制在触摸事件期间何时向模型发送消息。

模型需要知道用户第一次触摸屏幕的位置(未启用多点触控)以及用户离开屏幕的位置。我需要在用户第一次触摸时查询模型,以了解用户是否打算编辑图像视图的位置或创建新的图像视图,并且我需要向模型发送有关用户从屏幕上抬起的位置的消息,所以模型可以更新。在拖动事件期间,我还需要向模型发送持续查询以确定用户在任何给定时刻悬停的位置是否有效。

起初我以为我可以使用平移手势识别器来完成这项工作,但当我进一步研究它时,我无法找到一种方法来设置自定义函数调用在触地、拖动和起飞事件(如果有办法,很高兴知道)。我找到了 UIResponder 方法,但这些方法仍然可以使用,还是最好只使用 iOS6 中的手势识别器?

* 代码不包括在内,因为这个问题的范围相当大,我不想用不必要的细节分散人们的注意力。

【问题讨论】:

    标签: ios6 xcode4.5 uigesturerecognizer uiresponder


    【解决方案1】:

    我来到这里是因为我正在研究 UIGestureRecognizer 与基于 UIResponder 的触摸事件方法相比的效率,因为我将它们用于低延迟应用程序。对于一般用途,我可以确认您可以在UIView 子类或UIGestureRecognizer 子类(添加到UIView)甚至UIViewController 子类中覆盖touchesBegan/Moved/Ended/Cancelled 等方法(它是响应者链的一部分,例如UIView)。

    您还可以将特定的UIGestureRecognizer 子类化,例如 Pan GR,并覆盖这些方法以在利用它们已经检测到的内容的同时添加额外的功能。请务必致电super(实际上在上述所有情况下),您可能需要检查或更新state 属性。

    至于 我的 问题,关于哪个更有效,我还不知道,但我想它几乎是等价的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多