在Interface Builder中,我已经为MKMapView添加了按下手势识别器。
1秒钟后发送一个事件(我用它来向地图添加一个引脚)。我已经检查了"取消触摸视图"我的手势识别器的行为,但我的问题是,一旦识别出长按手势,如果您将手指放在屏幕上并将其拖动到地图视图上,则在拖动时将连续发送事件(长按),如如果它实际上是一个拖动手势识别器,导致数十个引脚被添加到我的地图......
我该如何解决这个问题?
谢谢。
答案 0 :(得分:4)
长按手势是连续的。手势开始了 (UIGestureRecognizerStateBegan)当允许手指的数量 (numberOfTouchesRequired)已按下指定的时间段 (minimumPressDuration)和触摸不会超越 允许的移动范围(allowableMovement)。 手势 只要手指移动,识别器就会转换到更改状态, 当任何一个手指结束时(UIGestureRecognizerStateEnded) 被解除了。
突出重点。
我相信你可能没有在手势识别器的委托方法中过滤状态。
你需要这样的东西: -
- (void)longPressGestureRecognizerStateChanged:(UIGestureRecognizer *)recognizer {
if (recognizer.state == UIGestureRecognizerStateBegan) {
// do your stuff...
}
}