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