点击地图视图时未调用didDeselectAnnotationView

时间:2016-04-29 07:32:28

标签: ios objective-c mkmapview mkannotationview

我已经构建了一个地图视图控制器,一切正常。在地图上选择注释视图时,屏幕上将显示自定义视图以显示有关该注释的一些信息。点击地图将取消选择该注释视图并隐藏自定义视图。

我现在得到一个要求,如果视图上只有一个注释,则在推入地图视图控制器时显示自定义视图。所以我只需实现

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view

当地图视图完成加载时。

- (void)mapViewDidFinishLoadingMap:(MKMapView *)mapView {
    if (self.viewModel.pointsArray.count == 1) {
        GSMapsLocationPoint* point = self.viewModel.pointsArray.lastObject;
        MKAnnotationView *annotationView = [self.mapsView viewForAnnotation:point];
        [self mapView:self.mapsView didSelectAnnotationView:annotationView];
    }
}

然而,当我点击地图时,- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view将不会被调用。如果我手动点击该注释视图,则会正确调用didSelectAnnotationView

似乎代码中的调用didSelectAnnotationView不会更改某些状态,因此地图视图不会知道选择了注释视图。

我该如何解决这个问题?提前致谢。

1 个答案:

答案 0 :(得分:1)

您应该使用selectAnnotation:代替didSelectAnnotationView:,请尝试将其替换为:

[self mapView:self.mapsView didSelectAnnotationView:annotationView];

用这个:

[self.mapsView selectAnnotation:point animated:YES];
选择注释时,mapView将调用

didSelectAnnotationView: