2013-02-11 85 views
2

我一直在研究各种方法来编写应用程序的触摸事件响应,我正在构建一个应用程序,而且我对我正在阅读的内容有些困惑。UIResponder vs UIGestureRecognizer触摸事件响应

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

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

具体什么我建立*:

我正在写一个控制器需要放置物品(UIImageViews的)在屏幕上用户触摸并四处移动,用户拖动一个视图。控制器正在与单独的模型进行通信,所以我需要在触摸事件期间精确控制何时向模型发送消息。

该模型需要知道用户第一次触摸屏幕的位置(多点触控未启用)以及用户抬起屏幕的位置。我需要在用户第一次触摸时查询模型,以确定用户是否意味着要编辑图像视图的位置或创建一个新的视图,并且我需要向用户提示关闭屏幕的位置发送消息该模型可以更新。在拖动事件中,我还需要向模型发送常量查询,以确定用户在任何给定时刻悬停的位置是否有效。

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

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

回答

1

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

您也可以继承泛GR等特定的UIGestureRecognizer,并覆盖这些方法以利用其他功能,同时利用它们已检测到的内容。一定要致电super(在上述所有情况下),您可能需要检查或更新state属性。

至于我的关于哪个更有效率的问题,我现在还不知道,但我可以想象它几乎相当。