MKMapView调用didSelectAnnotationView

时间:2011-11-11 10:20:09

标签: ios mkmapview

我使用MKMapView。在地图上,我展示了可点击的AnnotationViews。 点击AnnotationView后,我将MyController推送到NavigationController。 在MyController中,我单击后退按钮,之后我的前一个控制器显示(执行弹出控制器)。 当我在previousController回调中单击AnnotationVIew时, didSelectAnnotationView 不会被激活。为什么会这样?

5 个答案:

答案 0 :(得分:3)

这是因为当我点击注释选中它时,当我再次点击此注释时,它不会调用回调didSelectAnnotationView,因为已经选择了这个注释。

答案 1 :(得分:2)

检查您是否在.h文件中添加了MKMapViewDelegate并在.m文件中设置了委托

 mapView.delegate = self;

如果它不起作用,检查didSelectAnnotationView是否正确写入。

答案 2 :(得分:1)

Swift 2.1:

通过Apple文档(按Cmd +点击类名):

// Select or deselect a given annotation.  Asks the delegate for the corresponding annotation view if necessary.
public func selectAnnotation(annotation: MKAnnotation, animated: Bool)
public func deselectAnnotation(annotation: MKAnnotation?, animated: Bool)
public var selectedAnnotations: [MKAnnotation]

在选定的注释调用上执行所有操作之后

self.yourMapView.deselectAnnotation(yourAnnotation, animated: true)

答案 3 :(得分:0)

正如Oksana所说:这是因为选择了注释视图,你应该取消选择它。

您可以使用:[_mapView selectAnnotation:nil animated:NO];

答案 4 :(得分:0)

点击注释后,它会调用

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

单击注释外部时应触发

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

但在我的情况下,我覆盖了外部注释,所以我在需要时以编程方式调用方法:

[geoMapView deselectAnnotation:nil animated:NO];