MKMapView:获取注释引脚上的点击事件

我正在使用包含MKAnnotation引脚的MKMapView
在地图上方,我正在显示带有MKAnnotation引脚详细信息的UITableView

我的问题:当我select一个引脚,我想select相应的表格单元格。 为此,如果select引脚,我想捕获一个事件/代表。 我不是在说呼叫标注附件

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

只是更新了这个 – 在iOS 4中有MKMapViewDelegate方法,可以用来跟踪注释的select和取消select:

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

您可以使用选定事件的观察者:

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

 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{ NSString *action = (NSString*)context; if([action isEqualToString:@"ANSELECTED"]){ BOOL annotationAppeared = [[change valueForKey:@"new"] boolValue]; if (annotationAppeared) { // clicked on an Annotation } else { // Annotation disselected } } } 

我还没有看到一个简单的方法来在MapKit中做到这一点。 代表上没有mapView:annotationWasTapped:

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