想要再次检查CLLocationManager的速度之前要等一段时间吗?

时间:2015-08-28 21:23:02

标签: ios xcode core-location cllocationmanager

我目前正在委托函数locationManager:didUpdateLocations中检查设备的速度。在发生的事件我想等待10秒然后再次检查我的设备的速度,但我不希望我的应用程序在这十秒内被暂停我希望我的设备仍然更新其速度所以当我10秒后再次检查其速度,实际上是10秒后的速度。不仅仅是在我开始等待10秒之前的速度。谁知道我应该怎么做呢?

1 个答案:

答案 0 :(得分:0)

试试这个:

enter image description here

您的速度正在更新,然后当您在10秒内记录它时,它将采用self.currentLocation中存储的当前值。

所以在我的情况下,10秒延迟可以点击:

- (void)locationManager:(nonnull CLLocationManager *)manager didUpdateLocations:(nonnull NSArray<CLLocation *> *)locations {

    NSLog(@"current speed: %f", locations[0].speed);
    CLLocation *location = [locations objectAtIndex:0];
    self.currentLocation = location;
}

手势识别器:

UITapGestureRecognizer *logoTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(logoTapped:)];

事件处理程序:

- (void)logoTapped:(id)sender {

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(10 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        NSLog(@"SPEED AFTER 10 SECONDS OF WAIT: %f", self.currentLocation.speed);
    });
}

enter image description here