基本上委托(delegate)方法的一半时间
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations;
根本没有被调用。但另一半时间它工作得很好!我发现它通常发生在我关闭并退出 Xcode 后第一次启动它时,但在那之后或之后运行几次它似乎工作正常。我不能 100% 确定这只是 Xcode 问题还是什么,我很快就会获得开发者许可证,所以我会看看它是否能在实际设备上正常工作。
从 viewDidAppear 开始(也在 viewDidLoad 中尝试过,没有区别),我运行一个方法来初始化我的 locationManager 东西:
locationManager = [[CLLocationManager alloc]init];
[locationManager setDelegate:self];
locationManager.distanceFilter = 20.0f;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
locationManager.pausesLocationUpdatesAutomatically = NO;
if ([locationManager respondsToSelector:@selector(requestAlwaysAuthorization)])
[locationManager requestAlwaysAuthorization];
[locationManager startUpdatingLocation];
有时这行得通,有时行不通。我什至设置了一个计时器,每隔几秒就重新运行一次,但这是行不通的。
还有什么我应该做的吗?这个问题有答案吗?
谢谢。
最佳答案
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations;
只有在新位置可用时才会调用此委托(delegate)方法。有时 gps 无法获得卫星信号,因此无法获得位置。所以在这些情况下,不会触发上述方法。由于您是在模拟器中进行测试,因此您应该更改或设置位置。我认为它在实际设备上运行良好。
关于ios - CLLocationManager 一直不工作(iOS 8,Xcode 6),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26081646/