mapView:didSelectAnnotationView
是地图视图的委托方法,您可以在这里阅读:
MKMapViewDelegate 协议参考
您不需要调用它,地图视图将“自行”调用它并将其发送到注册为其委托的每个视图/视图控制器。
你需要做什么
基本上,您需要在 .h 文件中添加 MKMapViewDelegate,如下所示:
@interface someViewController : UIViewController <MKMapViewDelegate>
然后在 .m 文件中,实例化地图视图后,您应该添加:
mapView.delegate = self;//were self refers to your controller
从这一点开始,您的控制器将能够从地图视图“接收消息”,这是您可以在我链接到的 MKMapViewDelegate 参考中看到的方法。
因此,要实现 mapView:didSelectAnnotationView 您需要在 .m 文件中添加
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view{
//if you did all the steps this methosd will be called when a user taps the annotation on the map.
}
怎么了
在后台发生的事情是:
- 地图视图有一个处理 AnnotationView 触摸事件的方法(Apple 编码)。
当一个触摸事件发生时,它会向它的所有代表发送一条“消息”,说“嘿,一个用户在这张地图上选择了注释视图,用它做任何你需要的事情”。通常它看起来像这样:
[self.delegate mapView:someMapView didSelectAnnotationView:someAnnotationView];
然后将自己分配为委托并实现该方法的每个视图/控制器都将调用此方法。
祝你好运