gpt4 book ai didi

ios - 将 MKAnnotation 轻敲到 "select"真的很慢

转载 作者:搜寻专家 更新时间:2023-10-31 19:30:13 25 4
gpt4 key购买 nike

在点击和显示 MKMapView 上注释的标注之间几乎有 0.5 秒的延迟。

有谁知道为什么会这样,以及如何在用户点击 map 时使其立即响应?

即使点击时在标注中显示“当前位置”的用户位置注释也会发生这种情况。我希望它在点击时立即显示,没有奇怪的延迟。

编辑:我认为这是由于 didSelectAnnotationView 调用的 setSelected 函数所致。 setSelected 有一个“动画”属性,可能会减慢它的速度。如何消除该动画?

最佳答案

经过大量研究,我找到了解决方案!它有点老套,但效果很好。

秘诀在于,当关闭 map 缩放时,didSelect 监听器会立即触发。由于我们需要缩放(当然),我们需要做的是,暂时禁用缩放,只是为了 didSelect 事件的那一刻!

在 Swift 中:

let gestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(self.handleTap(_:)))
gestureRecognizer.numberOfTapsRequired = 1
gestureRecognizer.numberOfTouchesRequired = 1
gestureRecognizer.delegate = self
mapView.addGestureRecognizer(gestureRecognizer)

@objc func handleTap(_ sender: UITapGestureRecognizer? = nil) {
// disabling zoom, so the didSelect triggers immediately
mapView.isZoomEnabled = false
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
self.mapView.isZoomEnabled = true
}
}

此手势事件在 didSelect 事件之前触发。所以在 didSelect 事件被调用的那一刻,缩放被关闭并且它会立即触发!

func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
mapView.isZoomEnabled = true // Not really necessary
// Triggered immediately, do something
}

注意:这会禁用 map 的双击手势,但我想它们并没有被使用太多。因此,如果您想要快速响应,就需要忍受它!

关于ios - 将 MKAnnotation 轻敲到 "select"真的很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35639388/

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