Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Disable double tap zoom in MKMapView (iOS 6)

in ios 5 i was able to disable the double tap zoom by just overriding it with a new double tap gesture. But it seems that the double tap gesture is no longer in the gesturerecognizer array that comes with the mkmapview.

NSArray *gestureRecognizers = [_mapView gestureRecognizers];
for (UIGestureRecognizer *recognizer in gestureRecognizers) {
    NSLog(@"%@", recognizer);
}

returns nothing in ios 6, where in ios 5 it would return 2 recognizers, one for single tap and one for double tap.

like image 383
Ludvig Avatar asked Sep 20 '12 21:09

Ludvig


1 Answers

I'd look through the gesture recognizers of MKMapView's subviews. It's probably still there somewhere.

Of course, messing around with another view's GRs is slightly dubious and will likely break the next time Apple changes something about MKMapView...

EDIT: For the benefit of anyone else reading this, please check that it's a UITapGestureRecognizer and that numberOfTapsRequired == 2 and numberOfTouchesRequired == 1.

Also, instead of disabling double-taps on the map entirely, consider adding a double-tap GR on the annotation and then do [mapDoubleTapGR requireGestureRecognizerToFail:annotationDoubleTapGR]. Again, hacky — don't blame me if it breaks on the next OS update!

like image 70
tc. Avatar answered Sep 20 '22 01:09

tc.