我正在跟踪我的应用中的用户位置,当我收到第一个位置更新时,我正在停止更新。我们的想法是只获取用户位置的“快照”一次,而不是实际跟踪用户移动。
但是在设备和模拟器上的iOS 5.1中,跟踪开始后,屏幕右上角的位置服务图标不会消失。
在iOS 5.0上(只能在模拟器中测试),图标会出现并按预期消失。
有没有人知道可能影响iOS 5.1中CoreLocation的任何错误?
我发现其他人报告的内容非常相似,但他说,如果你强行杀死多任务栏中的应用程序,图标会被删除,我的图片会一直存在,即使应用程序根本没有运行也是如此。
此外(杀死应用程序后),如果我在设置中进入位置服务,我的应用程序会亮起紫色,我可以打开或关闭,切换顶部的位置图标没有问题。
看看这个人:http://bendodson.com/weblog/2012/03/14/ios-5-1-location-services-bug/
答案 0 :(得分:5)
传统方法:
[locationManager stopUpdatingLocation];
是不足够的。你还必须添加:
[locationManager stopMonitoringSignificantLocationChanges];
这是this问题的副本。
答案 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不是必需的,以便禁用导航图标。