MKMapView 注释第二次不可选择
Posted
技术标签:
【中文标题】MKMapView 注释第二次不可选择【英文标题】:MKMapView annotation is not selectable second time 【发布时间】:2014-07-08 17:48:59 【问题描述】:在我的 iPad 应用程序上,我使用 ios 地图通过注释显示几个点。我也想在选择注释时显示自定义标注。我正在使用 UIPopoverController 来显示标注。但是,这仅在第一次点击注释时才有效。如果我想查看同一注释上的标注,我必须先选择不同的注释,然后点击上一个注释。
基本上这个委托方法不会第二次触发。
-(void)mapView:(MKMapView *)mapView
didSelectAnnotationView:(MKAnnotationView *)view
我正在使用情节提要并在那里设置委托。这就是我设置注释的方式。
[self.mapView addAnnotations:self.placemarksArray]
谁能告诉我上述问题的原因? 谢谢
【问题讨论】:
你试过在 didSelectAnnotationView 方法的顶部调用 deselectAnnotation 吗? 哇,我没有。我已经测试过了,它的工作。您能否将此添加为答案,然后我可以接受答案。谢谢你的帮助。 【参考方案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)
【讨论】:
以上是关于MKMapView 注释第二次不可选择的主要内容,如果未能解决你的问题,请参考以下文章