Я немного поиграл, пытаясь перехватить панорамирование, но это не сработало. Удачи, не могу дождаться, чтобы услышать, что решение!

вы ущипните, чтобы увеличить / уменьшить масштаб в приложении «Карты Apple» во время отслеживания местоположения устройства, компонент «панорамирование» жеста ущипки игнорируется, а синий индикатор местоположения остается неподвижным в центре экрана. Это не тот случай, когда используется простойMKMapView.

Предполагая, что у меня уже есть местоположение пользователя, как я могу достичь этого эффекта? Я попытался сбросить координату центра в делегатеregionDid/WillChangeAnimated: методы, но они вызываются только в начале и в конце жеста. Я также попытался добавитьUIPinchGestureRecognizer подкласс, который сбрасывает центральную координату, когда касания перемещаются, но это приводило к глюкам рендеринга.

Редактировать: Для тех, кому интересно, у меня работает следующее.

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

Затем просто добавьте его в свойMKMapView:

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

Ответы на вопрос(3)

Ваш ответ на вопрос