【问题标题】:MKMapView annotation is not selectable second timeMKMapView 注释第二次不可选择
【发布时间】:2014-07-08 17:48:59
【问题描述】:

在我的 iPad 应用程序上,我使用 iOS 地图通过注释显示几个点。我也想在选择注释时显示自定义标注。我正在使用 UIPopoverController 来显示标注。但是,这仅在第一次点击注释时才有效。如果我想查看同一注释上的标注,我必须先选择不同的注释,然后点击上一个注释。

基本上这个委托方法不会第二次触发。

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

我正在使用情节提要并在那里设置委托。这就是我设置注释的方式。

[self.mapView addAnnotations:self.placemarksArray] 

谁能告诉我上述问题的原因? 谢谢

【问题讨论】:

  • 你试过在 didSelectAnnotationView 方法的顶部调用 deselectAnnotation 吗?
  • 哇,我没有。我已经测试过了,它的工作。您能否将此添加为答案,然后我可以接受答案。谢谢你的帮助。

标签: ios mkmapview mkannotation mkannotationview


【解决方案1】:

didSelectAnnotationView 委托方法的文档在讨论部分这样说:

您可以使用此方法跟踪注释视图选择状态的变化

(我在“更改”一词上添加了粗体和斜体。)

这意味着委托方法仅在注释视图的状态从“未选中”变为“选中”时触发。


为了避免不得不点击另一个注释或地图(这会将选定注释的状态更改为“未选中”)并再次检测同一注释上的“选择”,您可以强制取消选择didSelectAnnotationView 方法:

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
{
    [mapView deselectAnnotation:view.annotation animated:YES];

    //existing code to handle tap on annotation...
}

【讨论】:

    【解决方案2】:

    Swift 3 和 4:

    func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
    
        //THIS LINE IS THE SOLUTION
        mapView.deselectAnnotation(view.annotation, animated: true)
    
    }
    

    【讨论】:

    • 格式错误。包括讨论。考虑用与问题相同的语言编写解决方案(目标 C)。
    【解决方案3】:

    Swift 3 版本:

    mapView.deselectAnnotation(view.annotation, animated: true)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-10
      • 2010-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-09
      • 2012-02-28
      相关资源
      最近更新 更多