我的类被设置为位置管理器的委托,并且此代码中的日志会打印。
- (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以来,校准似乎非常敏感:任何时候手机靠近收音机,电脑,或者不在开放的场地,它会出现 - 大致每次我运行应用程序。
这将驱使我的用户疯狂,我正在考虑从我的应用程序中删除标题。
任何人都知道如何实际关闭校准?这不是荒野生存工具。
答案 0 :(得分:4)
我相信我知道造成这种情况的原因。如果您使用MKMapView,并且使用带有标题的跟踪模式,则mapview有自己的位置管理器,并且该位置管理器会自动设置为要求标题校准。真是个噩梦,因为位置管理员是一个无法访问它的隐藏变量。
答案 1 :(得分:0)
MKMapView的解决方案是调用它:
_mapView.userTrackingMode = MKUserTrackingModeNone;
在发布_mapView之前。
当您导航到不同的页面时,这将使校准消息消失。
答案 2 :(得分:0)
无法评论SG1答案,我会在这里做:
那么,如果你不能访问MKMapKit中的位置管理器变量,你应该如何管理校准屏幕?我知道其他应用程序可以做到这一点......这应该不会那么困难!