使用UITapGestureRecognizer而不是手动调用tapCount

问题描述:

我已经检查多个抽头,无论是2或10通过简单地触摸任何调用tapCount:使用UITapGestureRecognizer而不是手动调用tapCount

[[touches anyObject] tapCount]==2

这只是检查双击。

它工作正常。我想知道是否有任何特别的理由,而不是开始使用UITapGestureRecognizer

这似乎是在UITapGestureRecognizer API提供围绕相同的功能包装刚刚检查直接接触,如上述。像tapCount和屏幕上的手指数量不需要UITapGestureRecognizer

类的东西刷卡,我可以看到让UIKit的处理识别这些简单,因为它们很难手工编码,但对于一个tapCount?这里真正的收益在哪里,我错过了什么?

+0

需要添加到每个UIView子类以获取* n * -tap操作的代码较少。您不必处理各种状态(完成,取消,正确的点击次数等),您就有一个目标/动作,当您的水龙头发生时设置回调。 – zadr 2013-04-07 05:32:51

手势识别器提供协调处理同一视图上的多种手势类型。请参阅文档中关于状态机的讨论。

如果轻拍是您感兴趣的唯一手势,但您可能找不到太多价值,但如果您希望将触摸点的识别与由您或系统提供的类提供的其他手势进行协调,滚动视图。手势识别器在触摸时会首先出现裂缝,因此,如果您希望在滚动视图处理它们之前识别滚动视图的子视图中的触摸,则需要使用此架构。

的手势识别,也可设置延迟识别,所以,例如,对于单个抽头的动作不被调用直到双击已超时。

一般而言,手势识别方法是采用,因为它允许手势跨应用程序和源代码以一致的方式来管理一个好。如果苹果希望添加一个辅助技术偏好,让用户选择一个更长的时间,双击将被识别。他们可以做到这一点,而不需要对使用标准手势识别器的开发人员代码进行任何更改。

我要补充一点,手势识别,可直接添加到您的故事板或笔尖,所以在大多数情况下,你只需要编写目标的行动,这可能是在新代码中节省时间。

+0

你提出了一些很好的观点,谢谢。 – johnbakers 2013-04-07 05:45:29

UITapGestureRecognizer提供一个更清洁,更易于使用的API,但没有新的功能。所以对于你的情况,没有理由。