UILongPressGestureRecognizer操作取决于印刷时间

时间:2014-04-24 12:42:08

标签: ios uigesturerecognizer

我需要根据UILongPressGestureRecognizer的新闻持续时间采取不同的行动。 例如,在移动触摸之前按下0.5秒将触发与按下1秒之前不同的动作,然后再移动触摸。

现在我正在考虑两种不同的方法来实现这一目标。

a)添加两个单独的手势识别器,G1,minimumPressDuration为0.5,G2,minimumPressDuration为1,如果G2成功,则以某种方式取消UIGestureRecognizerDelegate中的G1。

b)添加单个手势识别器并实施自定义簿记和状态管理,以便选择适当的操作。

哪一个是首选方式,为什么?

1 个答案:

答案 0 :(得分:0)

UILongPressGestureRecognizer有两个州 UIGestureRecognizerStateBeganUIGestureRecognizerStateEnded 您可以测量状态之间的时间并确定要调用的方法。

编辑:要处理这种情况,您可以像这样使用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秒之前停止触摸事件,则需要使计时器无效并调用另一种方法。