被 CLSqliteDatabaseManager 覆盖的 MKMapView userTrackingMode
Posted
技术标签:
【中文标题】被 CLSqliteDatabaseManager 覆盖的 MKMapView userTrackingMode【英文标题】:MKMapView userTrackingMode overridden by CLSqliteDatabaseManager 【发布时间】:2011-11-24 16:03:53 【问题描述】:我在 UIViewController 的 viewLoaded 方法中设置 MKMapView 实例的 userTrackingMode。第一次加载视图时,我成功地将其设置为 MKUserTrackingModeFollowWithHeading。然而,每次视图加载时,虽然我再次将其值设置为 MKUserTrackingModeFollowWithHeading,但这几乎立即被 MKUserTrackingModeNone 覆盖。我继承了 MKMapView 并重写了 setUserTrackingMode,插入了一个断点,这样我就可以看到它是从哪里调用的。同样的事情发生在模拟器和设备上:
在模拟器上,当值设置为 MKUserTrackingModeNone 时,我从堆栈中得到以下信息:
在我的设备 (iPhone 4s) 上,我得到以下信息:
在我的应用程序中几乎没有其他事情发生,当然也没有任何事情直接触发要设置的属性。什么是 CLSqliteDatabaseManager?谷歌没有返回一个结果。在设备上究竟如何涉及 MKMapRectContainsRect?我使用的是 ios 5.0。
【问题讨论】:
【参考方案1】:现在回答似乎为时已晚。但对于正在寻找答案的人来说,它可能仍然会有所帮助。
我遇到了完全相同的问题。我突然明白了为什么。请加载您的 iOS 内置地图应用程序,然后单击左下角的小箭头按钮开始跟踪您的位置。只要你拖动地图。跟踪停止。同样的原因,如果您在代码中移动地图,MKMapView
属性 userTrackingMode
将自动重置为 MKUserTrackingModeNone
。
在我的例子中,我在- (void)viewWillAppear:(BOOL)animated
中将userTrackingMode
设置为MKUserTrackingModeFollow
后调用了setCenterCoordinate
。将代码mapView.userTrackingMode = MKUserTrackingModeFollow;
移动到最后,它运行良好。
【讨论】:
以上是关于被 CLSqliteDatabaseManager 覆盖的 MKMapView userTrackingMode的主要内容,如果未能解决你的问题,请参考以下文章