4

iOS6MKMapViewMKUserTrackingModeFollowWithHeadingまたはになっている間MKUserTrackingModeFollow、ズーム ジェスチャ (ピンチ、ダブルタップ、2 本指タップ) が機能する場合がありますが、常に機能するとは限りません。

afterbeforedidUpdateUserLocation:が呼び出されたときに問題が発生するようです。 regionWillChangeAnimated regionDidChangeAnimated

これを修正する方法についてのアイデアはありますか?

問題を切り分けるために、 と を使用してシングル ビュー アプリケーションを作成しMKMapView( UIToolbar.xib で設定)、これにMKUserTrackingBarButtonItem. UIViewControllerとして機能します<MKMapViewDelegate>。完全な実装コードは次のとおりです。

#import "ViewController.h"

@implementation ViewController

@synthesize mapView, toolbar;

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    [self.mapView setDelegate:self];

    MKUserTrackingBarButtonItem *trackButton = [[MKUserTrackingBarButtonItem alloc] initWithMapView:self.mapView];
    [toolbar setItems:[NSArray arrayWithObjects:trackButton, nil] animated:YES];
}

#pragma mark - MKMapViewDelegate

- (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated {
    NSLog(@"regionWillChange >>");
}


- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated {
    NSLog(@"<< regionDidChange");
}


- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation {
    NSLog(@"-- didUpdateUserLocation --");
}


- (void)mapView:(MKMapView *)mapView didChangeUserTrackingMode:(MKUserTrackingMode)mode animated:(BOOL)animated {
    // required for <MKMapViewDelegate>
}


#pragma mark - etc

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}

@end
4

0 に答える 0