我正在制作我在地图上的自定义手势。长按2秒后它应该可以工作。一切都很好,但经过长时间的按手势我移动手指和地图跟着他们...我需要逃避这一点。我试过了:
self.mapView.userInteractionEnabled = NO;
但似乎没有用......
答案 0 :(得分:1)
在我们的自定义self.measureGestureRecognizer
尝试识别手势时收集识别器:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
if (gestureRecognizer == self.measureGestureRecognizer)
{
if (self.otherGestureRecognizers == nil)
self.otherGestureRecognizers = [NSMutableSet set];
[self.otherGestureRecognizers addObject:otherGestureRecognizer];
}
return YES;
}
当我需要取消所有手势识别器时:
self.mapView.userInteractionEnabled = NO;
for (UIGestureRecognizer *gr in self.otherGestureRecognizers) {
if (gr.enabled) {
gr.enabled = NO;
gr.enabled = YES;
}
}
答案 1 :(得分:0)
工作方式。收集所有关于UIMapView
手势识别器的工作:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
if (gestureRecognizer == self.myLongPressGestureRecognizer
&& otherGestureRecognizer != self.myPanGestureRecognizer)
{
if (self.otherGestureRecognizers == nil)
self.otherGestureRecognizers = [NSMutableSet set];
[self.otherGestureRecognizers addObject:otherGestureRecognizer];
}
return YES;
}
当你的手势识别器被识别时取消它们:
- (IBAction)measureLongPressed:(UILongPressGestureRecognizer *)recognizer
{
if (recognizer.state == UIGestureRecognizerStateBegan)
{
self.mapView.userInteractionEnabled = NO;
for (UIGestureRecognizer *gr in self.otherGestureRecognizers)
{
gr.enabled = NO;
gr.enabled = YES;
}
self.otherGestureRecognizers = nil;
[self myLongPressDetectedAndMapFreezed];
return;
}
}
答案 2 :(得分:0)
您可以执行以下操作(Swift 4)
guard let splitPanGesture = splitVc.view.gestureRecognizers?.first(where: { ($0 as? UIPanGestureRecognizer) != nil }),
let mapPanGesture = mapView.subviews.first?.gestureRecognizers?.first(where: { ($0 as? UIPanGestureRecognizer) != nil }) else { return }
splitPanGesture.require(toFail: mapPanGesture)