1

在 GPS/Heading 处于活动状态时,我的应用可能会长时间无人关注。为了管理校准罗盘弹出窗口是否出现,我已经这样做了。

-(BOOL) locationManagerShouldDisplayHeadingCalibration:(CLLocationManager *)manager {
//    NSTimer *dismissHeadingSoon;
//    dismissHeadingSoon = [NSTimer scheduledTimerWithTimeInterval:200
//         target:self selector:@selector(removeHeadingCalibration:) userInfo:nil repeats:NO];
      return YES;
}

-(void) removeHeadingCalibration:(NSTimer *)timer {
    [locationManager dismissHeadingCalibrationDisplay];
}   

我想要一个计时器在一段时间后关闭弹出窗口(上面注释掉)。我的问题是:校准屏幕现在只显示半秒钟就直接消失了?所以我的代码现在只说是,没有任何计时器启动。如果我删除委托,它会正常工作。

文档显示“如果您想允许显示航向校准警报,则返回值为 YES;如果您不这样做,则返回 NO。”

我做错了什么?(ios7 和 xcode 5.1)

4

1 回答 1

2

在与 Apple DTS 工程师讨论后发现,如果您还连接了位置管理器,则无法使用 mapView (MKUserTrackingModeFollow) 中的航向功能。您需要将 userTrackingMode 设置为 MKUserTrackingModeNone 并使用 MKMapCamera 显示来自位置管理器的标题的地图。当我实现 locationManagerShouldDisplayHeadingCalibration 时,我的委托最终会与地图视图发生冲突,并且它们最终会相互抵消。这就是关闭它会导致出现校准屏幕的原因。由于我的应用程序将被使用数小时而无需注意,因此取消校准屏幕很重要,这样我就可以同时拥有它。

于 2014-01-15T06:32:43.683 回答