在我的mapview中,我使用长按手势在地图上绘制MKCircle。我想使用双击手势来移除该圈子。我将双击作为一个手势识别器并且它可以正常工作,但是,当它移除该圆时,它也会每次放大一点。我想知道是否有一种方法可以通过双击行为来移除默认缩放,只留下我自己的行为?我不想在双击时禁用整个地图的缩放。MapView - Disable Doubletap Zoom
UILongPressGestureRecognizer *longGesture = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(getMapCoordinateFromTouch:)];
[self.mapView addGestureRecognizer:longGesture ];
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(removeBoundary:)];
[tapGesture setNumberOfTapsRequired:2];
[tapGesture setNumberOfTouchesRequired:1];
tapGesture.delegate = self;
[self.mapView addGestureRecognizer:tapGesture];
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return YES;
}
-(void)removeBoundary:(UITapGestureRecognizer *)gesture
{
[self.mapView removeOverlays:self.mapView.overlays];
}
附加信息:
有人提出这个问题是相似的:Disable double tap zoom in MKMapView (iOS 6)
然而,这个人试图禁用所有双水龙头,而不只是默认行为。我确实在这个问题中找到了一些我认为可能会帮助的代码,但事实并非如此。在那个线程中,它表明你可以遍历mapview并移除手势识别器。这似乎适用于我可能添加的手势识别器,但它没有找到任何Apple默认行为。我在viewWillAppear(我也试过viewDidAppear)后运行下面的代码,但是一个断点表明“手势”是零。所以出于某种原因,该视图没有Apple的默认手势。
NSArray *gestures = [self.mapView gestureRecognizers];
for (UIGestureRecognizer *recognizer in gestures)
{
if ([recognizer isKindOfClass:[UITapGestureRecognizer class]])
{
UITapGestureRecognizer *tap = (UITapGestureRecognizer *)recognizer;
if (tap.numberOfTapsRequired == 2)
[self.mapView removeGestureRecognizer:recognizer];
}
}
可能重复的[停用双抽头放大MKMapView(iOS 6)](http://stackoverflow.com/questions/12521017/disable-double-tap-zoom-in-mkmapview-ios-6) –
我解释为什么问题是不同于链接的版本。 – C6Silver