【问题标题】:Want to wait a period of time before i check CLLocationManager's Speed again?在我再次检查 CLLocationManager 速度之前要等待一段时间吗?
【发布时间】:2015-08-28 21:23:01
【问题描述】:

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

【问题讨论】:

    标签: ios xcode core-location cllocationmanager


    【解决方案1】:

    试试这个:

    您的速度正在更新,然后当您在 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);
        });
    }
    

    【讨论】:

    • 我在查看您的答案之前发布了此问题,我将删除我的另一个问题,因为我认为它措辞不当。但是您的行中写着SPEED AFTER 10 SECONDS OF WAIT: 33. 3100 应该是10 秒后设备的速度吗?
    • 是的,这是设备(iPhone)在等待 10 秒后(点击按钮后)的速度。
    • 那么我不得不说它错了。你遇到了和我一样的问题。当前等待前的速度是33.3100,等待10秒后的速度也是33.3100?我怀疑它们是否正是您的整个列表中没有其他两种速度相同的情况。我认为它不会在您“等待”时更新您的速度,当您退出等待时,它只会返回它在再次开始更新之前的最后一个速度值。除非我只是不明白它是如何正常工作的
    • 我按下按钮之前的速度是 32.2,然后 10 秒后当前速度变为 33.31 并记录了您(10 秒后设备的当前速度)
    • 哦,我明白了。我看错了。我现在就试一试,看看它是否能解决我的问题,但我将不得不尝试除点击之外的其他方法来开始等待,它不适用于我正在做的事情。生病尝试另一个方法调用
    猜你喜欢
    • 2014-05-11
    • 1970-01-01
    • 2017-05-13
    • 1970-01-01
    • 2020-08-05
    • 2023-03-13
    • 2019-11-02
    • 1970-01-01
    • 2021-12-03
    相关资源
    最近更新 更多