【问题标题】:Long press gesture recognizer issue长按手势识别问题
【发布时间】:2015-07-13 08:25:40
【问题描述】:
在 Interface Builder 中,我向 MKMapView 添加了按下手势识别器。
1 秒后发送一个事件(我正在使用它向地图添加一个图钉)。我已经检查了手势识别器的“取消触摸视图”行为,但我的问题是,一旦识别出长按手势,如果您将手指放在屏幕上并将其拖动到地图视图上,事件(长时间press) 会在拖动的同时不断发送,就好像它实际上是一个拖动手势识别器一样,导致我的地图中添加了几十个图钉......
我该如何解决这个问题?
谢谢。
【问题讨论】:
标签:
ios
swift
uigesturerecognizer
uilongpressgesturerecogni
【解决方案1】:
根据documentation:
长按手势是连续的。手势开始
(UIGestureRecognizerStateBegan) 当允许的手指数
(numberOfTouchesRequired) 已按指定时间段
(minimumPressDuration) 并且触摸不会超出
允许的移动范围(allowableMovement)。 手势
每当手指移动时,识别器就会转换到 Change 状态,
并且它在任何手指时结束(UIGestureRecognizerStateEnded)
被提升了。
重点突出。
我相信您可能没有在手势识别器的委托方法中过滤状态。
你需要这样的东西:-
- (void)longPressGestureRecognizerStateChanged:(UIGestureRecognizer *)recognizer {
if (recognizer.state == UIGestureRecognizerStateBegan) {
// do your stuff...
}
}