MKMapView userTrackingMode由CLSqliteDatabaseManager覆盖

时间:2011-11-24 16:03:54

标签: iphone objective-c ios mapkit core-location

我在UIViewController的viewLoaded方法中设置了MKMapView实例的userTrackingMode。第一次加载视图时,我将其设置为MKUserTrackingModeFollowWithHeading成功。但是,每次后续加载视图时,虽然我再次将其值设置为MKUserTrackingModeFollowWithHeading,但这几乎立即被MKUserTrackingModeNone夸大了。我已经子类化了MKMapView并重写了setUserTrackingMode,插入了一个断点,这样我就可以看到它从哪里被调用。在模拟器和设备上都会发生同样的事情:

在模拟器上,当值设置为MKUserTrackingModeNone时,我从堆栈中得到以下内容:

enter image description here

在我的设备(iPhone 4s)上,我得到以下内容:

enter image description here

在我的应用程序中几乎没有其他事情发生,当然没有任何东西直接触发要设置的属性。什么是CLSqliteDatabaseManager? Google不会返回任何结果。在设备上如何参与MKMapRectContainsRect?我正在使用iOS 5.0。

1 个答案:

答案 0 :(得分:2)

回答似乎为时已晚。但对于寻找答案的人来说,它可能仍然有用。

我有完全相同的问题。我突然想出原因。请加载iOS内置地图应用,然后点击左下角的小箭头按钮开始跟踪您的位置。只要拖动地图。跟踪已停止。同样的原因,如果您在代码中移动地图,MKMapView属性userTrackingMode将自动重置为MKUserTrackingModeNone

就我而言,我在setCenterCoordinate中将userTrackingMode设置为MKUserTrackingModeFollow后致电- (void)viewWillAppear:(BOOL)animated。在将代码mapView.userTrackingMode = MKUserTrackingModeFollow;移动到最后之后,它运行良好。