2012-03-17 4 views
2

自分のクラスがロケーションマネージャの代理人として設定されています。このコードのログには印刷されます。iPhone:locationManagerShouldDisplayHeadingCalibrationが無視される/何もしない

- (BOOL)locationManagerShouldDisplayHeadingCalibration:(CLLocationManager *)manager { 
     NSLog(@"will NOT display calibration"); 
     [manager performSelector:@selector(dismissHeadingCalibrationDisplay) withObject:nil afterDelay:.25]; //This should never get displayed but does for some reason 

     return NO; 
} 

にもかかわらず、キャリブレーションベゼルは常にアプリ上に表示されます。 5.1が較正されて以来、較正が非常に敏感であるように見えるという私の要求を無視するという事実よりも厄介なことは、電話がラジオやコンピュータの近くにあるとき、毎回私はアプリを実行します。

これは、私のアプリから見出しを削除することを検討しているところで、ユーザーの嫌がらせを引き起こします。

実際にキャリブレーションをオフにする方法を知っていますか?これは野生の生存ツールではありません。

答えて

4

私はこれを引き起こしていることを知っていると信じています。 MKMapViewを使用していて、見出しにトラッキングモードを使用する場合、マップビューには独自のロケーションマネージャがあり、そのロケーションマネージャは自動的に見出しキャリブレーションを求めるように設定されます。どこの悪夢、ロケーションマネージャーはそれにアクセスできない隠された変数です。あなたが_mapViewをリリースする直前に

_mapView.userTrackingMode = MKUserTrackingModeNone; 

0

MKMapViewのためのソリューションは、これを呼び出すことです。

これにより、別のページに移動すると較正メッセージが表示されなくなります。

0

はSG1の答え、私はここでそれをやるSiにコメントすることはできません:それでは

、どのようにあなたがMKMapKitにおけるロケーションマネージャの変数にアクセスすることができない場合は、キャリブレーション画面を管理することになっていますか?私は他のアプリがそれをするのを知っている...それは難しいはずはない!

+0

実行時にマップビューを調べても、プライベート変数を使用して将来的に破損する可能性があります。私はそれに直面してからこれが修正されているのを見たことはありませんが、新しいバージョンで改善する可能性があります。 – SG1

関連する問題