Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios MKMapView中showsUserLocation的不稳定行为_Ios_Ios5_Mkmapview - Fatal编程技术网

Ios MKMapView中showsUserLocation的不稳定行为

Ios MKMapView中showsUserLocation的不稳定行为,ios,ios5,mkmapview,Ios,Ios5,Mkmapview,我有一个MKMapView和一个MKUserTrackingBarButtonItem。用户的当前位置只能在Follow或FollowWithHeading模式下显示。实现如下所示: - (void)mapView:(MKMapView *)mapView didChangeUserTrackingMode:(MKUserTrackingMode)mode animated:(BOOL)animated { [mapView setShowsUserLocation:(

我有一个
MKMapView
和一个
MKUserTrackingBarButtonItem
。用户的当前位置只能在
Follow
FollowWithHeading
模式下显示。实现如下所示:

- (void)mapView:(MKMapView *)mapView 
didChangeUserTrackingMode:(MKUserTrackingMode)mode 
       animated:(BOOL)animated
{
    [mapView setShowsUserLocation:(mode != MKUserTrackingModeNone)]; 
}
这是我的代码中唯一调用
setShowsUserLocation
的地方,当按下
MKUserTrackingBarButtonItem
时,它会按预期工作

我的问题发生在通过拖动地图来更改
UserTrackingMode
时:在这种情况下,“蓝点”注释会按预期消失,但在大约20%的情况下,当拖动结束时它会重新出现

如果我随后测试地图的
showsUserLocation
属性,它总是设置为NO,即使“蓝点”注释可见


如果你知道如何解决这个问题,我将非常感谢你的帮助

看起来,如果用户位置更新在拖动过程中的某个时间出现,则即使
showsuserslocation
NO
,委托方法仍会启动,蓝点也会重新出现

这似乎是地图视图的一个缺点

didUpdateUserLocation
中切换
showsUserLocation
似乎可以修复地图视图的内部状态,蓝点消失:

-(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
    if (!mapView.showsUserLocation)
    {
        mapView.showsUserLocation = YES;
        mapView.showsUserLocation = NO;
    }
}