iOS 5.1 CoreLocation,位置服务图标不会消失

时间:2012-04-19 16:22:41

标签: ios core-location cllocationmanager

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

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

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

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

我发现其他人报告的内容非常相似,但他说,如果你强行杀死多任务栏中的应用程序,图标会被删除,我的图片会一直存在,即使应用程序根本没有运行也是如此。

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

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

3 个答案:

答案 0 :(得分:5)

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

这是this问题的副本。


enter image description here

答案 1 :(得分: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,仅在视图被关闭并返回父视图时触发。相应调整。

撇开,但你不应该依赖你从位置经理那里得到的第一个位置,除非你已经测试了它的新颖性。你可能会得到一个旧的缓存位置。

答案 2 :(得分:2)

  

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

也只是想获得快照。致电后

[locationManager stopUpdatingLocation];
iPhone4S上的

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

将位置管理器的委托设置为nil不是必需的,以便禁用导航图标。