0

のインスタンスを含むクラスがありますMKMapView

@property(nonatomic, weak) IBOutlet MKMapView *ibMapView;

プロジェクトの他の場所でも のシングルトン インスタンスを使用していますがCLLocationManager、このマップ ビューが iPhone のステータス バーに表示される「場所」アイコンに関与していることがわかりました。

具体的には、次のコードが原因です。

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    // If I comment out this line below, the "Location" status icon never shows, as expected 
    self.ibMapView.showsUserLocation = YES;

    // ...other magical stuff happens here, not related to map view
}

showsUserLocationこのようにNOに設定してみました

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    self.ibMapView.showsUserLocation = NO;

    // I also have tried logging to make sure showUserLocation is set to NO- returns "NO" as expected
    DebugLog(@"Show User Location: %@", self.ibMapView.showsUserLocation ? @"YES" : @"NO");

    // ...other stuff happens here, not related to map view...
}

ただし、位置ステータス アイコンは引き続き表示されます... 1 時間経過しても消えません...

showUserLocationインスタンスをYES に設定すると、場所のステータス アイコンが表示されMKMapViewなくなります。

4

1 に答える 1

0

結局のところ、これは Apple のフレームワークのどこかにあるバグです...

解決策については、この質問と選択された回答を参照してください。

stopUpdatingLocation が呼び出された後もステータス バーにロケーション インジケーターが表示されたままになりますが、古いバンドル ID の場合のみです。

基本的に、位置情報とプライバシーをリセットすると([設定] -> [一般] -> [リセット] -> [位置情報とプライバシーをリセット])、これで問題が修正されます (showsUserLocation完了したら NO に設定することも忘れないでください)。

于 2013-02-26T07:39:21.620 に答える