gpt4 book ai didi

swift - 自定义 MKPointAnnotation 不响应用户交互

转载 作者:行者123 更新时间:2023-11-28 15:38:00 24 4
gpt4 key购买 nike

我正在制作一个使用 MKPointAnnotation 的 Swift 应用程序,我最近遇到了一个问题,我需要在我的注释中存储元数据,所以我在下面创建了自定义类:

class BRETTFAnnotation: MKPointAnnotation {

var tag: Int64

var name: String

init(lat : Double, lon:Double, t : Int64, n: String) {

self.tag = t
self.name = n

super.init()


self.coordinate = CLLocationCoordinate2D(latitude: lat, longitude: lon)
}

}

我的 MKAnnotationView viewfor MKAnnotation 方法如下所示:

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
let newAnnotation = MKPinAnnotationView(annotation: annotation, reuseIdentifier: "reuse")

newAnnotation.canShowCallout = true

let right = self.button(title: "Yes")
right?.addTarget(self, action: #selector(clickedToConfirmNewPoint), for: .touchUpInside)
newAnnotation.rightCalloutAccessoryView = right

let left = self.button(title: "No")
left?.addTarget(self, action: #selector(clickedToCancelNewPoint), for: .touchUpInside)
newAnnotation.leftCalloutAccessoryView = left

return newAnnotation
}

我遇到的问题是,每当我单击我的自定义 BRETTFAnnotation(我将其添加到我的 MKMapView)时,什么都没有发生。当我只是使用 MKPointAnnotation(而不是 BRETTFAnnotation)时,当我点击 map 时,MKAnnotationView 上的两个按钮会显示。 我正在尝试使用我的 BRETTFAnnotation 而不是 MKPointAnnotationMKPinAnnotationView 在触摸时显示。

如何在用户同时点击注释时继续使用我的自定义注释并显示标注?

编辑 1:因为它可能有用,下面的代码是我如何制作注释并将其添加到 mapView。

        let location = gestureRecognizer.location(in: mapView)
let coordinate = mapView.convert(location,toCoordinateFrom: mapView)

print("adding lat,long \(coordinate.latitude),\(coordinate.longitude)")


lastPoint = BRETTFAnnotation(lat: coordinate.latitude, lon: coordinate.longitude, t: 1, n: "")

let annotationView = MKPinAnnotationView(annotation: lastPoint, reuseIdentifier: "reuse")

mapView.addAnnotation(lastPoint)

最佳答案

我通过使我的 BRETTFAnnotation 成为 NSObjectMKAnnotation 的子类而不是 MKPointAnnotation 来解决这个问题。这样做允许我的自定义类接收用户交互并显示标注。

关于swift - 自定义 MKPointAnnotation 不响应用户交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44088165/

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