iphone - 使用 UITapGestureRecognizer 而不是手动调用 tapCount

标签 iphone ios ipad uikit uigesturerecognizer

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

[[触摸任意对象] tapCount]==2

这只是检查双击。

效果很好。我想知道是否有任何特殊原因开始使用 UITapGestureRecognizer

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

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

最佳答案

手势识别器可以协调处理同一 View 上的多种手势类型。请参阅文档中对状态机的讨论。

如果点击是唯一感兴趣的手势,您可能不会发现太多值(value),但如果您想将点击的识别与您或系统提供的类提供的其他手势(例如滚动)协调起来,该架构会派上用场意见。手势识别器在触摸时首先被识别,因此,如果您想在 ScrollView 处理触摸之前识别 ScrollView 子级中的触摸,则需要使用此架构。

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

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

我应该补充一点,手势识别器可以直接添加到 Storyboard或 Nib ,因此在大多数情况下,您只需要编写目标操作,这可能会节省新代码的时间。

关于iphone - 使用 UITapGestureRecognizer 而不是手动调用 tapCount,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15858516/

相关文章:

php - 使用 php (APNS) 在 iPhone 中检测应用程序安装状态?

ios 自动从一个屏幕切换到另一个屏幕

ios - 如何将应用程序图像添加到 iPad 和 iPad Pro 的 Assets 目录中?

objective-c - 启动画面在模拟器和设备上有所不同

iphone - iOS 应用程序启动画面使用的尺寸是多少?

iphone - 无法使用 Skobbler 在 Iphone 上运行 swift 项目

iphone - 关于 GKAchievement 中的完成百分比

jquery - 带有 iOS 的 SoundManager2 - 不播放声音 onClick 事件

android - 为 Android 和 Mac 直播音频

iphone - 链接错误重复符号