gpt4 book ai didi

swift - 自定义 MKAnnotationView 想要再次被点击

转载 作者:行者123 更新时间:2023-11-28 13:35:38 27 4
gpt4 key购买 nike

我的自定义 MKAnnotationView 有问题。我从我的 REST api 下载坐标并将其放置在何处,然后使用以下代码将图钉放置在 map 上:

private func refreshMapView(andCenterMap: Bool){
DispatchQueue.main.async { [weak self] in
guard let self = self else {
return
}

self.mapView.addAnnotations(self.spotsArray)
if andCenterMap {
self.centerMap(at: self.mapView.userLocation.coordinate)
}
}
}

放置大头针后我会自动缩放 map 。

这里是自定义注释创建的代码:

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
// Do not touch the annotation of the user location
if annotation.isKind(of: MKUserLocation.self){
return nil
}

let annoIdentifier = "SPOT"
var annotationView: MKAnnotationView?

if let dequeued = mapView.dequeueReusableAnnotationView(withIdentifier: annoIdentifier) {
annotationView = dequeued
}else{
let av = MKAnnotationView(annotation: annotation, reuseIdentifier: annoIdentifier)
annotationView = av
}

// Changing the image of the pin
annotationView!.annotation = annotation
if let image = UIImage(named: "map_pin") {
annotationView!.image = image
let deltaY = image.size.height/2
annotationView!.centerOffset = CGPoint(x: 0.0, y: -deltaY)
}else{
annotationView!.image = nil
}

return annotationView
}

如您所见,我的自定义图钉使用的是这张图片(@1x、@2x、@3x)

map_pin map_pin@2x map_pin@3x

点击的我想显示“详细 View ”,我使用注释作为发送者以便在下一个 View 中获得我需要的所有信息。这里的代码:

func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
guard let ann = view.annotation else {
return
}
if ann.isKind(of: MKUserLocation.self){
return
}
self.performSegue(withIdentifier: "showDetailSegue", sender: ann)
}

所以我展示了我需要的所有数据,然后我可以返回到“ map View ”。

问题是:

在 map View 中,如果我想再次选择相同的注释,则无法再点击。

我可以看到它(在正确的位置),但只有当我放大一点并点击“围绕”注释时才能再次选择它。

对如何解决这个问题有什么建议吗?

提前致谢!

最佳答案

添加 didSelect 的这一端

mapView.deselectAnnotation(ann,animated:false)

关于swift - 自定义 MKAnnotationView 想要再次被点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56675228/

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