Mantenga la coordenada central mientras pellizca MKMapView

Si pellizca para acercar / alejar en la aplicación Mapas de Apple mientras rastrea la ubicación del dispositivo, se ignora el componente "panorámica" del gesto de pellizco y el indicador de ubicación azul permanece fijo en el centro de la pantalla. Este no es el caso cuando se utiliza unaMKMapView.

Suponiendo que ya tengo la ubicación del usuario, ¿cómo podría lograr este efecto? He intentado restablecer la coordenada central en la @ del delegaregionDid/WillChangeAnimated: métodos pero solo se llaman al principio y al final del gesto. También intenté agregar unUIPinchGestureRecognizer subclase que restablece la coordenada central cuando se mueven los toques, pero esto resultó en fallas de renderizado.

Editar Para aquellos que estén interesados, lo siguiente funciona para mí.

// CenterGestureRecognizer.h
@interface CenterGestureRecognizer : UIPinchGestureRecognizer

- (id)initWithMapView:(MKMapView *)mapView;

@end

// CenterGestureRecognizer.m
@interface CenterGestureRecognizer ()

- (void)handlePinchGesture;

@property (nonatomic, assign) MKMapView *mapView;

@end

@implementation CenterGestureRecognizer

- (id)initWithMapView:(MKMapView *)mapView {
  if (mapView == nil) {
    [NSException raise:NSInvalidArgumentException format:@"mapView cannot be nil."];
  }

  if ((self = [super initWithTarget:self action:@selector(handlePinchGesture)])) {
    self.mapView = mapView;
  }

  return self;
}

- (BOOL)canBePreventedByGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer {
  return NO;
}

- (BOOL)canPreventGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer {
  return NO;
}

- (void)handlePinchGesture {
  CLLocation *location = self.mapView.userLocation.location;
  if (location != nil) {
    [self.mapView setCenterCoordinate:location.coordinate];
  }
}

@synthesize mapView;

@end

Entonces simplemente agréguelo a suMKMapView:

[self.mapView addGestureRecognizer:[[[CenterGestureRecognizer alloc] initWithMapView:self.mapView] autorelease]];

Respuestas a la pregunta(3)

Su respuesta a la pregunta