There are two delegate methods that telling map region is changed:
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
- (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated
My question is: Is there a way to detect the map region is changed from double tap or zooming?
You can use a gesture recognizer to detect the double tap:
UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(handleDoubleTap:)];
recognizer.numberOfTapsRequired = 2;
[self addGestureRecognizer:recognizer];
and do the same for the pinch zoom, with a UIPinchGestureRecognizer