2015-08-28 5 views
0

В настоящее время я проверяю скорость своего устройства в функции делегата locationManager:didUpdateLocations. В случае события я хочу подождать 10 секунд, а затем снова проверить скорость моего устройства, но я не хочу, чтобы мое приложение было приостановлено в течение этих десяти секунд, я хочу, чтобы мое устройство все еще обновляло его скорость, поэтому, когда я проверяю его снова через 10 секунд, это на самом деле его скорость через 10 секунд. Не только скорость прямо перед тем, как я начал ждать 10 секунд. Кто-нибудь знает, как я должен это делать?Хотите подождать некоторое время, прежде чем снова проверить скорость CLLocationManager?

ответ

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

+0

я разместил это для Я посмотрел на ваш ответ, и я собирался удалить свой другой вопрос, потому что думал, что это плохо написано. Но ваша линия, где говорится «СКОРОСТЬ ПОСЛЕ 10 СЕКУНД ЖДЕТ: 33. 3100', должна быть скорость устройства через 10 секунд? – Amacc002

+0

Да, это скорость устройства (iPhone) после 10 секунд ожидания (после того, как я нажал кнопку). –

+0

хорошо, тогда я собираюсь сказать, что это неправильно. У меня такая же проблема, как и у меня. текущая скорость перед ожиданием 33.3100, а скорость после ожидания 10 секунд также равна 33.3100? Я сомневаюсь, что они точно такие, когда никакие другие две скорости не совпадают во всем списке. Я не думаю, что он обновляет вашу скорость, пока вы «ожидаете», и когда вы выходите из ожидания, он просто возвращает последнее значение скорости, которое оно имело до того, как оно снова начнет обновление. если я просто не понимаю, как его правильно работать – Amacc002

Смежные вопросы