的MKMapView:上标注引脚获得点击事件(MKMapView: Get clicked even

2019-08-22 20:44发布

我使用的是MKMapView包含几个MKAnnotation引脚。
在地图上面,我是呈现出UITableView与详细信息MKAnnotation引脚。

我的问题:当我选择引脚,我想选择相应的表格单元格。 为此,我想如果选择引脚捕捉事件/委托。 我说的不是调用标注附件

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

Answer 1:

刚刚更新到这一点 - 在iOS 4的存在是可以用来跟踪注释选择和取消选择MKMapViewDelegate方法:

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


Answer 2:

你可以使用一个观测器的选择 - 事件:

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


Answer 3:

我还没有看到一个简单的方法在MapKit做到这一点。 有没有mapView:annotationWasTapped:对委托。

这样做的一个方法是提供自己的注解视图子类。 自定义注解视图可以捕捉到引脚选择setSelected:animated:或在一个较低的水平事件处理和传递信息到你的视图控制器。



文章来源: MKMapView: Get clicked event on annotation pin