我需要根据UILongPressGestureRecognizer
的新闻持续时间采取不同的行动。
例如,在移动触摸之前按下0.5秒将触发与按下1秒之前不同的动作,然后再移动触摸。
现在我正在考虑两种不同的方法来实现这一目标。
a)添加两个单独的手势识别器,G1,minimumPressDuration为0.5,G2,minimumPressDuration为1,如果G2成功,则以某种方式取消UIGestureRecognizerDelegate
中的G1。
b)添加单个手势识别器并实施自定义簿记和状态管理,以便选择适当的操作。
哪一个是首选方式,为什么?
答案 0 :(得分:0)
UILongPressGestureRecognizer
有两个州
UIGestureRecognizerStateBegan
和UIGestureRecognizerStateEnded
您可以测量状态之间的时间并确定要调用的方法。
编辑:要处理这种情况,您可以像这样使用NSTimer
。
if (gesture.state == UIGestureRecognizerStateBegan)
{
self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(forOneSec:) userInfo:nil repeats:NO];
[self.timer fire];
}
如果未移动触控,则会在1秒后调出长按方法。如果用户在1秒之前停止触摸事件,则需要使计时器无效并调用另一种方法。