如何防止UITapGestureRecognizer快速连续识别单个分接头?

时间:2014-07-25 23:56:33

标签: ios uiview uigesturerecognizer

我有一个分配了UITapGestureRecognizer实例的视图。当用户点击一次时它会正确响应,但我想阻止它再次识别用户是否会在短时间内再次点击。

我在一个游戏中使用它,用户点击位置来查找隐藏的对象。我正试图阻止“在整个屏幕上疯狂地点击”策略。

这有一个简单的解决方案吗?

2 个答案:

答案 0 :(得分:1)

使用计时器确定是否接受点击。

创建名为BOOL的{​​{1}} ivar。同时添加名为denyTap的{​​{1}} ivar。

然后在您的点击识别器方法中执行以下操作:

NSTimer

答案 1 :(得分:1)

我不建议使用NSTimer表示不到1秒的分辨率。此外,它有更多的开销。有关NSTimer vs CACurrentMediaTime()的更多信息,请阅读this answer

- (IBAction)handleTap:(UITapGestureRecognizer *)tgr {
     static NSTimeInterval previousTapTime = 0.0; // Or an ivar

     if ((CACurrentMediaTime() - previousTapTime) > 1.0) {
         // A valid tap was detected, handle it
     }

     previousTapTime = CACurrentMediaTime();
}