【问题标题】:iPhone: locationManagerShouldDisplayHeadingCalibration ignored/does nothingiPhone:locationManagerShouldDisplayHeadingCalibration 被忽略/什么都不做
【发布时间】:2012-04-02 20:44:15
【问题描述】:

我的班级被设置为位置管理器的代表,并且此代码中的日志会打印出来。

- (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 开始,校准似乎非常敏感:只要手机靠近收音机、电脑,或者不在空旷的地方,它就会出现 - 大致每次我运行应用程序时。

这会让我的用户发疯,尽管我正在考虑从我的应用中删除标题。

有人知道如何真正关闭校准吗?这不是野外生存工具。

【问题讨论】:

    标签: ios cocoa-touch core-location


    【解决方案1】:

    我相信我知道是什么原因造成的。如果您使用 MKMapView,并且使用带有航向的跟踪模式,则地图视图有自己的位置管理器,并且该位置管理器会自动设置为要求进行航向校准。真是一场噩梦,因为位置管理器是一个无法访问它的隐藏变量。

    【讨论】:

      【解决方案2】:

      MKMapView 的解决方案是这样调用:

      _mapView.userTrackingMode = MKUserTrackingModeNone;
      

      就在您发布 _mapView 之前。

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

      【讨论】:

        【解决方案3】:

        不能对 SG1 的回答发表评论,我会在这里做:

        那么,如果您无法访问 MKMapKit 中的位置管理器变量,您应该如何管理校准屏幕?我知道其他应用也能做到……这应该不难!

        【讨论】:

        • 如果您在运行时检查地图视图,您可以这样做,但这会使用私有变量并且将来可能会中断。自从我遇到这个问题以来,我还没有看到这个问题得到解决,但是任何新版本都可以改进它。
        猜你喜欢
        • 2015-02-18
        • 1970-01-01
        • 2017-10-11
        • 2021-11-06
        • 2019-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多