2012-03-17 165 views
2

我的班级设置为位置管理员的代表,并且此代码中的日志确实打印。iPhone:locationManagerShouldDisplayHeadingCalibration忽略/不执行任何操作

- (BOOL)locationManagerShouldDisplayHeadingCalibration:(CLLocationManager *)manager { 
     NSLog(@"will NOT display calibration"); 
     [manager performSelector:@selector(dismissHeadingCalibrationDisplay) withObject:nil afterDelay:.25]; //This should never get displayed but does for some reason 

     return NO; 
} 

尽管如此,校准挡板始终显示在应用程序。更令人讨厌的是,它忽略了我不要求显示的要求,因为从5.1开始,校准似乎非常敏感:只要手机靠近收音机,计算机或不在露天场地,它就会出现每次我运行应用程序。

这将推动我的用户疯狂,我正考虑从我的应用程序中删除标题。

任何人都知道如何关闭校准?这不是一个荒野生存工具。

回答

4

我相信我知道是什么造成这种情况。如果您使用MKMapView,并且将跟踪模式与标题一起使用,那么mapview会有自己的位置管理器,并且该位置管理器会自动设置为要求标题校准。作为位置管理者的一个噩梦是一个无法访问的隐藏变量。

0

为的MKMapView的解决方法是调用此:

_mapView.userTrackingMode = MKUserTrackingModeNone; 

你释放_mapView之前。

当您导航到不同的页面时,这将使校准消息消失。

0

无法SG1答案评论,SI我会做在这里:

这样的话,你怎么认为管理校准屏幕,如果你不能在MKMapKit访问位置管理器变量?我知道其他应用程序这样做......这应该不是那么困难!

+0

如果您在运行时检查mapview,但使用私有变量并可能在将来中断,可以这样做。我没有看到这个问题,因为我面对它,但它可以改善任何新版本。 – SG1 2015-09-09 03:14:36