3

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

1 秒后发送一个事件(我正在使用它向地图添加一个图钉)。我已经检查了手势识别器的“取消触摸视图”行为,但我的问题是,一旦识别出长按手势,如果您将手指放在屏幕上并将其拖动到地图视图上,事件(长时间press) 会在拖动的同时不断发送,就好像它实际上是一个拖动手势识别器一样,导致我的地图中添加了几十个图钉......

我怎样才能解决这个问题 ?

谢谢你。

4

1 回答 1

4

根据文档

长按手势是连续的。当允许的手指数量 (numberOfTouchesRequired) 在指定的时间 (minimumPressDuration) 内被按下并且触摸没有超出允许的移动范围 (allowableMovement) 时,手势开始 (UIGestureRecognizerStateBegan)。每当手指移动时,手势识别器就会转换到 Change 状态,并在任何手指抬起时结束 (UIGestureRecognizerStateEnded)。

重点突出。

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

你将需要这样的东西: -

- (void)longPressGestureRecognizerStateChanged:(UIGestureRecognizer *)recognizer {
    if (recognizer.state == UIGestureRecognizerStateBegan) {
       // do your stuff...
    }
}
于 2015-07-13T08:30:20.203 回答