1

私のアプリは、GPS/Heading がアクティブな状態で長時間注意を払わない可能性があります。コンパスのキャリブレーションポップアップが表示されるかどうかを管理するために、これを行いました。

-(BOOL) locationManagerShouldDisplayHeadingCalibration:(CLLocationManager *)manager {
//    NSTimer *dismissHeadingSoon;
//    dismissHeadingSoon = [NSTimer scheduledTimerWithTimeInterval:200
//         target:self selector:@selector(removeHeadingCalibration:) userInfo:nil repeats:NO];
      return YES;
}

-(void) removeHeadingCalibration:(NSTimer *)timer {
    [locationManager dismissHeadingCalibrationDisplay];
}   

しばらくするとポップアップを閉じるタイマーが必要です(上記のコメントアウト)。問題は、キャリブレーション画面が 0.5 秒間だけ表示され、すぐに消えることです。したがって、私のコードはタイマーを開始せずに YES としか言いません。デリゲートを削除すると、正常に機能します。

ドキュメントには、「戻り値 ヘディング キャリブレーション アラートの表示を許可する場合は YES、許可しない場合は NO」と記載されています。

私は何を間違えましたか?(ios7 および xcode 5.1)

4

1 に答える 1

2

Apple DTS エンジニアとの話し合いの結果、ロケーション マネージャーも接続している場合、mapView の見出し機能 (MKUserTrackingModeFollow) を使用できないことが判明しました。userTrackingMode を MKUserTrackingModeNone に設定し、MKMapCamera を使用して、ロケーション マネージャーからの見出しでマップを表示する必要があります。locationManagerShouldDisplayHeadingCalibration を実装すると、デリゲートがマップ ビューと衝突してしまい、互いに打ち消し合ってしまいます。そのため、オフのままにしておくと、キャリブレーション画面が表示されます。私のアプリは注意を払わずに何時間も使用されるため、キャリブレーション画面のキャンセルは重要であり、この方法で両方を使用できます.

于 2014-01-15T06:32:43.683 に答える