マップが表示され、showUserLocationがYESに設定されている場合、マップはバックグラウンドで更新を続けます。
ビューが表示されなくなったりアプリケーションがバックグラウンドになったりすると、この設定を解除する必要があります。最も良い方法は、おそらくUIApplicationDidEnterBackgroundNotification
とUIApplicationDidBecomeActiveNotification
の通知を受けるためにあなたのviewControllerを登録することでしょう。
- (void)viewDidLoad{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appToBackground) name:UIApplicationDidEnterBackgroundNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appReturnsActive) name:UIApplicationDidBecomeActiveNotification object:nil];
}
その後、この通知によって呼び出されるメソッドでは、userLocation
に関するマップビューのプロパティを変更します。これらのメソッドが実際に呼び出されること
- (void)appToBackground{
[mapview setShowsUserLocation:NO];
}
そして
- (void)appReturnsActive{
[mapview setShowsUserLocation:YES];
}
チェックをブレークポイントを設定することにより、そこに戻り、ホーム画面に戻ります。
私はこの方法を使っていますが、 '[MKMapView(UserPositioning)stopUpdatingUserLocation]'は[MKMapView(UserPositioningInternal)removeUserLocation]を呼び出してSIGSEGVを爆発させます。あなたはこれを見た/解決したとは思わない? –
'viewDidUnload'はいつオブザーバーを削除する必要がありますか? – Raptor
@MichaelKernahan私は同じ問題を抱えています。あなたは解決策を見つけましたか? – horsejockey