如果我在 UITapGestureRecognizer 上将 numberOfTapsRequired 设置为 2,那么用户在第一次点击后有一定的时间再次点击以触发我的识别器。有谁知道如何找出允许的确切时间?
以此类推,在 Cocoa 中,NSEvent 具有 doubleClickInterval 类方法。我正在为 UITapGestureRecognizer 寻找 iOS 中的等价物
如果我在 UITapGestureRecognizer 上将 numberOfTapsRequired 设置为 2,那么用户在第一次点击后有一定的时间再次点击以触发我的识别器。有谁知道如何找出允许的确切时间?
以此类推,在 Cocoa 中,NSEvent 具有 doubleClickInterval 类方法。我正在为 UITapGestureRecognizer 寻找 iOS 中的等价物
答案是:0.35 秒,至少在今天的 iOS 5.1 上。
我创建了一个测试应用程序,它使用一对点击识别器来识别单击和双击以更新一对 UIlabels。然后,我使用Instruments UI 自动化重复发送双击,并在两次点击之间逐渐增加时间。在 0.34 秒时,一系列点击被识别为双击,但在 0.35 秒时,它们被识别为单击。
这很像 Lou 的建议,但不同之处在于我需要使用 Instruments。我找不到在 UIKit 中模拟用户点击的方法。
在测试应用程序中,创建一个 UITapGestureRecognizer,然后开始touchesBegan:withEvent:
在计时器上调用和关联的成员。看看这是否会导致手势被识别。
您可能必须尝试弄清楚如何正确调用它以便识别任何手势,但据我了解,识别器仅依赖于通过将它们用作视图版本相同消息的选择器来调用它们,因此调用它们你自己应该有同样的效果。
当您找到所需的任何公差的数字时,您可以在您的应用程序中使用它。
此外,由于这可以随时更改(因为 Apple 只是喜欢它)——或者在不同的 iOS 版本上可能会有所不同,因此您始终可以将其合并到您的初始化中。
或者,您可以像@Paul 在他的评论中建议的那样接近。
您可以在调试器中查看 UITapGestureRecognizer 并查看私有变量 _maximumIntervalBetweenSuccessiveTaps 等于 0.34(9)。