4

我在我的应用程序中跟踪用户的位置,当我收到第一个位置更新时我会停止更新。这个想法是只获得一次用户位置的“快照”,而不是实际跟踪用户的移动。

但是在设备和模拟器上的 iOS 5.1 中,屏幕右上角的定位服务图标在跟踪开始后不会消失。

在 iOS 5.0 上(只能在模拟器中测试),图标按预期出现和消失。

有谁知道可能影响 iOS 5.1 中 CoreLocation 的任何错误?

我发现其他人报告了非常相似的情况,但是他说,如果您在多任务栏中强行终止该应用程序,则该图标将被删除,我的图标仍然存在,即使该应用程序根本没有运行也是如此。

另外(杀死应用程序后),如果我在设置中进入位置服务,我的应用程序会亮起紫色,我可以打开或关闭,切换顶部的位置图标没有问题。

看看这个人:http ://bendodson.com/weblog/2012/03/14/ios-5-1-location-services-bug/

4

3 回答 3

5

传统的方法:
[locationManager stopUpdatingLocation];
是不够的。您还必须添加:
[locationManager stopMonitoringSignificantLocationChanges];

这是这个问题的副本。


在此处输入图像描述

于 2013-09-04T21:50:12.487 回答
4

我注意到它需要一段时间才能消失(大约 10 秒)。当视图消失时,您可能需要停止更新位置并将委托设置为 nil:

- (void)viewWillDisappear:(BOOL)animated
{
    if ([self isMovingFromParentViewController]) {
        // Popping the view
        NSLog(@"MyViewController isMovingFromParentViewController");
        [locationManager stopUpdatingLocation];
        [locationManager setDelegate:nil];
    }
    [super viewWillDisappear:animated];
}

注意:此代码仅适用于 iOS 5,并且仅在视图被关闭并返回父视图时触发。相应调整。

顺便说一句,但您不应该依赖从位置管理器返回的第一个位置,除非您已经对其进行了新的测试。您可能会得到一个旧的缓存位置。

于 2012-04-19T16:25:23.973 回答
2

这个想法是只获得一次用户位置的“快照”,而不是实际跟踪用户的移动。

也只是想得到一个快照。打电话后

[locationManager stopUpdatingLocation];

在 iPhone4S - iOS 5.1.1 上,导航图标不会立即消失,而是会延迟大约 10 秒。此外,我有时会在调用 stopUpdatingLocation 后收到另一个位置更新。

为了禁用导航图标,无需将位置管理器的委托设置为 nil。

于 2012-06-27T07:08:21.037 回答