2

基本的に、アプリを初めて起動すると、[位置情報サービスを有効にする]プロンプトが表示されます。ユーザーが[許可]をタップしたら、ユーザーの場所の更新を開始し、地域を拡大します。

viewDidLoadでロケーションマネージャーを起動しましたが、残念ながら、ユーザーが[許可]をタップする前にビューが読み込まれます。ユーザーはすでに位置情報サービスを許可しているため、アプリケーションの2回目の起動時にすべてが正常に機能します

私の質問は、[許可]をタップしたイベントをキャプチャして、コードを実行して領域にズームインできるようにするにはどうすればよいですか?

使用してみ-(void)locationManager:didChangeAuthorizationStatus:ましたが、ユーザーが許可をタップしたときにこのデリゲートメソッドを呼び出さないようです。

これが理にかなっていることを願っています私はこれに非常に新しいです。

4

3 に答える 3

5

私の知る限り、このイベントをキャプチャする必要はありません。この場所の座標を取得する前に、特定の場所にズームすることはできないためです。アプリは最初の起動からキャッシュされた位置データを使用するため、2回目の起動で正常に動作します。したがって、必要なのは、新しい有効な座標を受け取った後にズームコードを実行することです。CLLocationManagerを使用する場合は、

– locationManager:didUpdateToLocation:fromLocation: 

その代理人で。ユーザーが位置情報サービスの使用を拒否した場合、代理人はそれを受け取ります

locationManager:didFailWithError:

対応するエラーがあります。

MKMapKitを使用する場合は、MKMapViewデリゲート実装メソッドよりも

– mapViewWillStartLocatingUser: 

現在のユーザーの位置に焦点を合わせます。拒否の実装を処理する

– mapView:didFailToLocateUserWithError:

対応するAppleドキュメントへのリンク:

CLLocationManager

CLLocationManagerDelegate

MKMapViewDelegate

于 2012-06-17T20:55:22.313 に答える
1

次のように処理できます。

- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status
{

    switch([CLLocationManager authorizationStatus])
    {
        case kCLAuthorizationStatusAuthorized:
            NSLog(@"Location services authorised by user");
            break;

        case kCLAuthorizationStatusDenied:
            NSLog(@"Location services denied by user");
            break;

        case kCLAuthorizationStatusRestricted:
            NSLog(@"Parental controls restrict location services");
            break;

        case kCLAuthorizationStatusNotDetermined:
            NSLog(@"Unable to determine, possibly not available");
            break;
    }
}
于 2013-05-16T10:05:05.780 に答える
1

ここでは問題なく動作します。ロケーション マネージャーを開始し、デリゲートを設定して開始します。許可するポップアップが表示されると、が equals to-(void)locationManager:didChangeAuthorizationStatus:で呼び出されます。「許可しない」をタップすると、 に等しい で再度呼び出されます。「許可」をタップすると、equals toで呼び出されます。デリゲートが正しく設定されているかどうかを確認してください。CLAuthorizationStatuskCLAuthorizationStatusNotDeterminedCLAuthorizationStatuskCLAuthorizationStatusDeniedCLAuthorizationStatuskCLAuthorizationStatusAuthorized

于 2012-08-21T20:18:06.890 に答える