gpt4 book ai didi

ios - 是否可以为 MGLPolyline 创建自定义弹出窗口?

转载 作者:行者123 更新时间:2023-11-29 06:01:37 37 4
gpt4 key购买 nike

所以我一直在寻找make an MGLPolyline tapable的方法。我考虑过的一种方法是使用 MapBox 添加的弹出窗口来显示某些内容,但使弹出窗口不可见,这样当某行被录制时我仍然可以执行某些操作(调用函数)。

当前当您添加polyline.title时
然后,当您点击波纹管函数时,它会运行,但如果没有此功能或将其设置为空(“”),则它不会运行

        func mapView(_ mapView: MGLMapView, annotationCanShowCallout annotation: MGLAnnotation) -> Bool {
// Always allow callouts to popup when annotations are tapped.
print("ok ran?")
return true
}

但是,我一直无法找到一种方法使弹出窗口不可见或不显示,以便我可以在录制时运行一个函数。 有办法做到这一点吗?或者以可扩展的方式实现我想要做的事情的一般方法?

更新:

        func mapView(_ mapView: MGLMapView, annotationCanShowCallout annotation: MGLAnnotation) -> Bool {
// Always allow callouts to popup when annotations are tapped.
print("ok ran?")
return false
}

通过将上面的 return 更改为 false,它似乎可以识别触摸而不显示任何内容。 这是实现我想要的效果的最佳方式吗?考虑到有时当我触摸它时它无法识别,这似乎不太好。

最佳答案

当您点击 MGLPolyline 时,您就选择了它。即使您从 annotationCanShowCallout: 返回了 false,点击后也会选择折线,即使可能没有可见的提示。这就是为什么您的某些点击没有明显的 Action 。这些点击将取消选择折线(再次不可见)。

您可以做的是从 annotationCanShowCallout: 返回 false (假设您不希望任何注释有标注)并使用另一个委托(delegate)方法来实现您想要的目标。

func mapView(_ mapView: MGLMapView, annotationCanShowCallout annotation: MGLAnnotation) -> Bool {
return false
}

func mapView(_ mapView: MGLMapView, didSelect annotation: MGLAnnotation) {
print("Tapped")
mapView.deselectAnnotation(annotation, animated: false)
}

通过立即取消选择注释,您可以将每次点击注册为选择,从而消除错过的点击。

关于ios - 是否可以为 MGLPolyline 创建自定义弹出窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54612568/

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