长按手势识别器问题

时间:2015-07-13 08:25:40

标签: ios swift uigesturerecognizer uilongpressgesturerecogni

在Interface Builder中,我已经为MKMapView添加了按下手势识别器。

1秒钟后发送一个事件(我用它来向地图添加一个引脚)。我已经检查了"取消触摸视图"我的手势识别器的行为,但我的问题是,一旦识别出长按手势,如果您将手指放在屏幕上并将其拖动到地图视图上,则在拖动时将连续发送事件(长按),如如果它实际上是一个拖动手势识别器,导致数十个引脚被添加到我的地图......

我该如何解决这个问题?

谢谢。

1 个答案:

答案 0 :(得分:4)

根据documentation

  

长按手势是连续的。手势开始了   (UIGestureRecognizerStateBegan)当允许手指的数量   (numberOfTouchesRequired)已按下指定的时间段   (minimumPressDuration)和触摸不会超越   允许的移动范围(allowableMovement)。 手势   只要手指移动,识别器就会转换到更改状态,   当任何一个手指结束时(UIGestureRecognizerStateEnded)   被解除了。

突出重点。

我相信你可能没有在手势识别器的委托方法中过滤状态。

你需要这样的东西: -

- (void)longPressGestureRecognizerStateChanged:(UIGestureRecognizer *)recognizer {
    if (recognizer.state == UIGestureRecognizerStateBegan) {
       // do your stuff...
    }
}