Mantenha a coordenada central enquanto aperta o MKMapView

Se você pressionar para aumentar / diminuir o zoom no aplicativo Mapas da Apple enquanto rastreia a localização do dispositivo, o componente "pan" do gesto de pinçar é ignorado e o indicador de localização azul permanece fixo no centro da tela. Este não é o caso ao usar um @ simplMKMapView.

Supondo que eu já possua a localização do usuário, como eu poderia conseguir esse efeito? Tentei redefinir a coordenada central no @ do delegaregionDid/WillChangeAnimated: métodos, mas eles são chamados apenas no início e no final do gesto. Eu também tentei adicionar umUIPinchGestureRecognizerubclasse que redefine a coordenada central quando os toques se movem, mas isso resultou em falhas de renderizaçã

Editar Para os interessados, o seguinte funciona para mi

// 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

Em seguida, basta adicioná-lo ao seuMKMapView:

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

questionAnswers(3)

yourAnswerToTheQuestion