gpt4 book ai didi

ios - 检测何时在 MKMapView 中选择了第二个注释

转载 作者:技术小花猫 更新时间:2023-10-29 11:05:17 24 4
gpt4 key购买 nike

当用户选择 map 中的注释时,我会显示带有信息的底部 View ,例如谷歌地图应用程序。我在 map 的代表中展示它:

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

当用户取消选择它时(通过点击 map 上的任意位置),我隐藏底部 View 。这是在相反的委托(delegate)方法中完成的:

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

效果很好,我很满意。但是,如果用户选择第二个注释(即:他点击第一个注释,然后点击另一个,同时没有先取消选择注释),我不想隐藏我的底部 View 然后再次显示。我只想更改其中的信息。

但是,由于 mapView:didDeselectAnnotationView: mapView:didSelectAnnotationView: 之前被调用,我不知道如何检测这种情况我在上面描述过。

我的问题是:我怎样才能检测到用户选择了第二个注释,或者我应该如何以任何其他方式解决这个问题

最佳答案

这可以在不添加显式延迟的情况下通过在主队列上异步执行来实现。

 var currentSelection: MKAnnotationView?
func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
currentSelection = view
*** select code goes here ***
}

func mapView(_ mapView: MKMapView, didDeselect view: MKAnnotationView) {
DispatchQueue.main.async { [weak self] in
self?.delayedDeselect(view: view)
}
}

func delayedDeselect(view: MKAnnotationView) {
if currentSelection == view {
*** deselect code goes here ***
}
}

关于ios - 检测何时在 MKMapView 中选择了第二个注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23667606/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com