2011-11-24 64 views
1

我在我的UIViewController的viewLoaded方法中设置MKMapView实例的userTrackingMode。第一次加载视图时,我成功将它设置为MKUserTrackingModeFollowWithHeading。然而,随后每加载视图,虽然我再次将其值设置为MKUserTrackingModeFollowWithHeading,但这几乎立即被MKUserTrackingModeNone覆盖。我已经分类MKMapView并重写setUserTrackingMode,插入一个断点,以便我可以看到它从哪里被调用。同样的事情发生在这两个模拟器和设备:MKMapView userTrackingMode由CLSqliteDatabaseManager覆盖

模拟器上我得到了从堆栈以下当值设置为MKUserTrackingModeNone:

enter image description here

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

enter image description here

很少有在我的应用程序别的事情上,当然没有什么直接触发属性设置。什么是CLSqliteDatabaseManager? Google不会返回任何结果。在设备上,MKMapRectContainsRect如何参与?我正在使用iOS 5.0。

回答

2

回答似乎太迟了。但是对于正在寻找答案的人来说,这可能仍然有帮助。

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

在我的情况,我在- (void)viewWillAppear:(BOOL)animated称为集userTrackingModesetCenterCoordinateMKUserTrackingModeFollow。在将代码mapView.userTrackingMode = MKUserTrackingModeFollow;移动到最后之后,它工作正常。