1

ユーザーの場所を特定しようとしているだけです。コードは次のとおりです。

self.locationManager = [[CLLocationManager alloc] init];
//self.locationManager.delegate = self;
self.locationManager.distanceFilter = 80.0;
[self.locationManager startUpdatingLocation];

self.geoCoder = [[CLGeocoder alloc] init];
[self.geoCoder reverseGeocodeLocation: self.locationManager.location completionHandler:

 ^(NSArray *placemarks, NSError *error) {

     CLPlacemark *placemark = [placemarks objectAtIndex:0];

     UIAlertView *locationAlert = [[UIAlertView alloc] initWithTitle:@"Location" message:[NSString stringWithFormat:@"The app has determined that your country is: %@ (%@)", placemark.country, placemark.ISOcountryCode] delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
     [alert show];


 }];

アプリを初めて実行すると、二重のアラート ポップアップが表示されます。locationAlert が最初にポップアップし、(null) 国をユーザーに通知します。次に、アプリが私の位置情報を使用したいと言っているデフォルトのポップアップがほぼ同時にポップアップします。[はい] をクリックすると、次にアプリを実行したときに、ユーザーの正しい国の単一のポップアップが表示されます。

だから私の質問は、最初にユーザーの場所にアクセスする許可を得るにはどうすればよいですか?許可なしに場所を照会したため、null 応答を取得せずに、このコードを実行して場所を見つけることができますか?

4

1 に答える 1

2

リバース ジオロケーション コードは のlocationプロパティを使用しようとしていますが、デリゲート メソッドが呼び出される locationManagerまで有効ではありません。CLLocationManagerlocationManager:didUpdateToLocation:fromLocation:

位置情報の更新を処理するに は、このようなデリゲート メソッドが必要です。

于 2013-05-23T23:59:38.140 に答える