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:
或者在较低级别的事件处理程序中,并将该信息传递给视图控制器。