Ios MKMapView:在注释pin上单击事件

Ios MKMapView:在注释pin上单击事件,ios,cocoa-touch,uitableview,mkmapview,Ios,Cocoa Touch,Uitableview,Mkmapview,我正在使用一个包含两个MKAnnotationpin的MKMapView。 在地图上方,我显示了一个UITableView,其中包含MKAnnotation引脚的详细信息 我的问题:当我选择pin时,我想选择相应的表格单元格。 为此,如果选择了pin,我希望捕获一个事件/委托。我不是说打电话给调出附件 - (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryContr

我正在使用一个包含两个
MKAnnotation
pin的
MKMapView

在地图上方,我显示了一个
UITableView
,其中包含
MKAnnotation
引脚的详细信息

我的问题:当我选择pin时,我想选择相应的表格单元格。 为此,如果选择了pin,我希望捕获一个事件/委托。我不是说打电话给调出附件

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control  

在MapKit中,我还没有看到一种简单的方法来实现这一点。代理上没有
mapView:Annotationwasttapped:


一种方法是提供自己的注释视图子类。自定义注释视图可以在
setSelected:animated:
或较低级别的事件处理程序中捕获管脚选择,并将该信息传递给视图控制器。

您可以为所选事件使用观察者:

[pin addObserver:self
      forKeyPath:@"selected" 
         options:NSKeyValueObservingOptionNew
         context:@"ANSELECTED"];

只是对此的更新--在iOS 4中,有一些MKMapViewDelegate方法可用于跟踪注释选择和取消选择:

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

我也是这样做的。奇怪的是,苹果没有为此提供任何回调:/如果您想知道用户是否正在单击展开/选定的批注,可以在didSelectAnnotationView中选中view.selected==YES
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
- (void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)view