使用UITapGestureRecognizer而不是手动调用tapCount

时间:2013-04-07 03:18:03

标签: iphone ios ipad uikit uigesturerecognizer

我一直在检查多次点击,无论是2还是10,只需在任何触摸时调用tapCount:

[[touches anyObject] tapCount]==2

这只是检查双击。

工作正常。我想知道是否有任何特殊原因而是开始使用UITapGestureRecognizer

似乎UITapGestureRecognizer API提供了与直接检查触摸相同功能的包装器,如上所述。 tapCount之类的内容和屏幕上的手指数量不需要UITapGestureRecognizer

对于像滑动这样的东西,我可以看到让UIKit处理识别它们的简单性,因为它们更难以手动编码,但对于tapCount?这里真正的收获在哪里,我错过了什么?

2 个答案:

答案 0 :(得分:1)

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

如果点击是唯一感兴趣的手势,您可能找不到多少价值,但如果您想要将水龙头的识别与您或系统提供的类提供的其他手势(例如滚动)进行协调,则该架构会派上用场观点。手势识别器在触摸时首先得到破解,因此,如果您希望在滚动视图处理它们之前识别滚动视图的子项中的触摸,则需要使用此体系结构。

手势识别器也可以设置为推迟识别,因此,例如,在双击超时之前,不会调用单击的操作。

通常,手势识别器方法是一个很好的方法,因为它允许在应用程序和代码源之间以一致的方式管理手势。如果Apple想要添加一个辅助技术首选项,允许用户选择更长的时间来识别双击。他们可以做到这一点,而无需对使用标准手势识别器的开发人员代码进行任何更改。

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

答案 1 :(得分:0)

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