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

我在用户点击位置以查找隐藏对象的游戏中使用它。我试图阻止“像在屏幕上疯狂似的点击”策略起作用。

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

最佳答案

我不建议对小于1秒的分辨率使用NSTimer。另外,它还有更多开销。阅读this answer了解有关NSTimerCACurrentMediaTime()的更多信息。

- (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();
}

10-08 00:26