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

时间:2009-10-21 08:14:26

标签: ios cocoa-touch uitableview mkmapview

我正在使用包含几个MKMapView引脚的MKAnnotation 我在地图上方显示UITableView,其中包含MKAnnotation图钉的详细信息。

我的问题:当我选择一个引脚时,我想选择相应的表格单元格。 为此,如果选择了引脚,我想捕获一个事件/委托。我不是在谈论呼叫标注配件

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

3 个答案:

答案 0 :(得分:42)

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

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

答案 1 :(得分:3)

您可以使用Observer for Selected-Event:

[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
        }
    }
}

答案 2 :(得分:1)

我还没有看到在MapKit中执行此操作的简单方法。代表上没有mapView:annotationWasTapped:

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