长按手势识别器问题

3
在Interface Builder中,我向MKMapView添加了一个按压手势识别器。在1秒后发送一个事件(我使用它来向地图添加标记)。我已经检查了我的手势识别器的“取消视图触摸”行为,但我的问题是,一旦识别出长按手势,如果您在屏幕上保持手指并在地图视图上拖动它,事件(长按)将在拖动时不断发送,好像它实际上是一个拖动手势识别器,导致我的地图上被添加了大量的标记......
我该如何解决这个问题?
谢谢。
1个回答

4
根据文档,长按手势是持续性的。当指定时间(minimumPressDuration)内按下允许的手指数(numberOfTouchesRequired),且触摸点没有超出允许移动的范围(allowableMovement)时,手势开始(UIGestureRecognizerStateBegan)。当任意一个手指移动时,手势识别器会转换到Change状态,并在任何手指离开时结束(UIGestureRecognizerStateEnded)。
请注意重点部分。
我认为您可能没有在手势识别器的委托方法中过滤状态。
您需要像这样做:
- (void)longPressGestureRecognizerStateChanged:(UIGestureRecognizer *)recognizer {
    if (recognizer.state == UIGestureRecognizerStateBegan) {
       // do your stuff...
    }
}

哇!太感谢了!我没想到那个! - Pop Flamingo
1
没问题,很高兴能帮助到你 :) - Steve Wilford

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接