【问题标题】:mapView: didSelectAnnotationView: not functioning properly.mapView:didSelectAnnotationView:无法正常运行。
【发布时间】:2014-10-29 00:08:16
【问题描述】:

我正在构建一个使用内置地图视图的 IOS 应用程序。我成功放置了自定义注释等。但是,按下注释时调用的委托函数出现问题(mapView:didSelectAnnotationView)。

我第一次按下注释时,该函数被正确调用。但是,如果我继续单击相同的注释,则该功能不会触发。如果此时我单击不同的注释,该功能将触发,但如果我再次单击该注释,则该功能不会触发。基本上,我永远无法连续两次单击相同的注释。委托函数只会在第一次被调用。有没有人遇到过这个问题?有什么地方我应该特别寻找错误吗?

【问题讨论】:

  • 我有同样的问题,但有一个区别,即。当自定义注释视图出现在地图视图的边界上时,我遇到了问题。

标签: ios mkannotationview


【解决方案1】:

好吧,当您考虑它时,您已经选择了该注释视图。代表告诉您该引脚已被选中是没有意义的。

一个简单的解决方法是在委托调用中将注释设置为取消选择。这应该允许您再次接听电话。

[annotation setSelected:NO animated:NO];

在此处查看您需要调用的方法。 https://developer.apple.com/library/ios/documentation/mapkit/reference/MKAnnotationView_Class/index.html#//apple_ref/occ/instm/MKAnnotationView/setSelected:animated

【讨论】:

  • 什么对你不起作用?你还在用 Objective-C 吗?这个答案很老了,所以它可能已经过时了。
【解决方案2】:

朋友提出了一个想法,结果证明是正确的。当 didSelectAnnotationView 触发时,它实际上将注释标记为以某种方式被选中。然后,当您再次单击它时,委托功能不会触发,因为它“已被选中”。完成您想要的操作后,您必须通过调用以下函数手动取消选择注释。

[mapView deselectAnnotation:view.annotation animated:false];

【讨论】:

    【解决方案3】:
    - (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)aView
        {
            indexPathTag=aView.tag;
            [mapView deselectAnnotation:aView.annotation animated:YES];
    
        }
    - (void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)aView
        {
        }
    

    我希望这对你有用:) 我遇到了同样的问题,这段代码对我有用。

    【讨论】:

      猜你喜欢
      • 2021-04-22
      • 2015-12-08
      • 2019-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多