5

マップビューのサブビューを持つビューがあります。CLLocationManager を使用して現在の場所を取得し、地図に表示しました。次に、ビューが閉じようとしているときに、次のことを行います

_mapView.delegate = nil;
_mapView = nil;

[_locationManager stopUpdatingLocation];
_locationManager.delegate = nil;
_locationManager = nil;

しかし、ステータスバーの位置情報サービス (GPS) インジケーターは消えずに残っています。また、アプリがバックグラウンドに移行してからフォアグラウンドに戻ると、ステータス バーにインジケーターが表示されるのを待ってからアクティブになります。

インジケータがまだそこにある理由はありますか?

編集 - 以下は、CLLocationManager が初期化されて開始される方法です。

    if (_locationManager == nil) {
        _locationManager = [[CLLocationManager alloc] init];
        _locationManager.delegate = self;
        _locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
        _locationManager.distanceFilter = kCLDistanceFilterNone;

        [_locationManager startUpdatingLocation];
    }  

そして、以下は私がそれを止めた方法です

    if (_locationManager != nil) {
        [_locationManager stopUpdatingLocation];
        _locationManager.delegate = nil;
        _locationManager = nil;
    }
4

2 に答える 2

2

ロケーションエンジニアがWWDCで説明したように、アイコンは、最後に使用されたサービスに応じて、特定の時間右上隅に表示されたままになります。ロケーションの使用をやめると[locationManager stopUpdatingLocation]、アイコンが消える前にタイマーが開始すると思います。一部のサービスでは長くなります。彼らはそれらのタイマーがどれくらいの長さであるかについて詳細に立ち入りませんでした。私は彼らがiOS6で長くなることを知っています。

場所の監視を停止したら、それを待って(30〜60秒)、アイコンが消えるかどうかを確認します。すべてが停止していることを前提としています。お役に立てれば。

于 2012-07-09T18:39:37.593 に答える
1

同様の問題があり、ここで答えを見つけました:

ステータス バーに iPhone の位置情報サービス アイコンが表示されるのは何によって決まりますか?

私の場合(開発中)の解決策は、場所の警告をリセットすることでした(設定>一般>リセット>場所の警告をリセット)

于 2013-09-01T20:19:35.580 に答える