我有一个分配了UITapGestureRecognizer
实例的视图。当用户点击一次时它会正确响应,但我想阻止它再次识别用户是否会在短时间内再次点击。
我在一个游戏中使用它,用户点击位置来查找隐藏的对象。我正试图阻止“在整个屏幕上疯狂地点击”策略。
这有一个简单的解决方案吗?
答案 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();
}