2

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

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

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

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

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

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

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

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

4

1 回答 1

1

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

您还可以对特定UIGestureRecognizer的 Pan GR 进行子类化,并覆盖这些方法以在利用它们已经检测到的内容的同时添加额外的功能。一定要打电话super(实际上在上述所有情况下),您可能想要检查或更新该state属性。

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

于 2013-12-10T18:34:19.100 回答