iOS6MKMapView
がMKUserTrackingModeFollowWithHeading
またはになっている間MKUserTrackingModeFollow
、ズーム ジェスチャ (ピンチ、ダブルタップ、2 本指タップ) が機能する場合がありますが、常に機能するとは限りません。
afterとbeforedidUpdateUserLocation:
が呼び出されたときに問題が発生するようです。 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