0

私にはこのようなオブザーバーがいます:

[mapView.userLocation addObserver:self forKeyPath:@"location" options:0 context:NULL];

したがって、ユーザーがジオロケーションを変更すると、メソッドが呼び出されます。ただし、ユーザーが移動しない場合は場所が変更されず、メソッドが呼び出されないため、メソッドもx秒ごとに呼び出されるようにする必要があります。しかし、私はいくつかの計算をしなければなりません。

どうすればそれができますか?

よろしくお願いします。

4

2 に答える 2

3

タイマーを使う

NSTimer *timer;
timer = [NSTimer timerWithTimeInterval:30 //seconds
                                target:self
                              selector:@selector(myMethodtoRun:)
                              userInfo:nil // send an object if you want
                               repeats:YES];

[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];

後でタイマーをキャンセルする場合は、メソッドmyMethodToRunで無効にすることができます

- (void) myMethodToRun:(NSTimer *)timer {
    …
    if (shouldStopTimer) {
        [timer invalidate];
    }
}
于 2010-01-13T15:47:24.310 に答える
0

MKMapViewでは、GPSデバイスをあまり制御できません。CLLocationManagerを使用することをお勧めします。これにより、いつでも更新を実行できます。次に、NSTimer@coneybeareが提案したものを使用できます。

CLLocationManagerでは、distanceFilterを設定できます。これは、MKMapViewのオブザーバーと同じことを実行します。

于 2010-01-13T15:55:06.027 に答える