2

「現在地を使用します」メッセージの「OK」をクリックした後、最初の実行時に GPS が起動しません。現在の場所周辺の場所の名前を表示するテーブル ビューがあります。テーブルにマップ ビューはなく、CoreLocation フレームワークを使用するだけです。最初にアプリをビルドして実行し、テーブル ビューに入ると、有名なメッセージ「"myApp" あなたの現在の場所を使用したいです」が飛び出します。「OK」ボタンをクリックした後、GPS は動作していません。しかし、テーブル ビューに戻ると、GPS は正常に機能します。

質問: 「OK」ボタンをクリックした後、最初の起動時に GPS を実行するにはどうすればよいですか? 前もって感謝します!

編集 1

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

    CLLocationManager *locationManager = [[[CLLocationManager alloc] init] autorelease];
    [locationManager setDelegate:self];    

    [locationManager startUpdatingLocation];    
}

「現在地を使用します」メッセージの「OK」ボタンがクリックされたことを検出する方法はありますか?

4

1 に答える 1

3

コードを表示します。

- (void)viewDidLoad
{
    [super viewDidLoad];

    if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined) {

         [NSTimer scheduledTimerWithTimeInterval:2 target:self     selector:@selector(timerFired:) userInfo:nil repeats:YES];

    }
}

- (void)timerFired:(NSTimer*)theTimer{

if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized) {
        [self startUpdatingCurrentLocation];
        [theTimer invalidate];
    } 
    [self startUpdatingCurrentLocation];

}

タイマーは、特定の時間間隔が経過するまで待機してから起動し、指定されたメッセージをターゲットオブジェクトに送信します。NSTimerリファレンス。

タイマーは、ユーザーが「OK」ボタンを押すと、GPSの開始を2回目に透過的に実行できます。そうでない場合、タイマーはアプリがユーザーの選択を取得するまでGPSステータスをチェックし続けます。

于 2012-06-17T12:49:00.160 に答える