在我的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