gpt4 book ai didi

ios - didSelect for MKAnnotationView 未触发

转载 作者:搜寻专家 更新时间:2023-11-01 05:48:32 26 4
gpt4 key购买 nike

我无法在可选择的 MapView 上创建自定义注释。我尝试了几种方法,但没有成功:

  • 使用 MKMapViewDelegate 的 didSelect
  • 使用添加到 AnnotationView 的 UIButton
  • 为 ImageView 使用 UITapGestureRecognizer,它应该用于注释

您可以在下面的代码中找到所有这些方法的注释:

override func viewDidLoad() {
super.viewDidLoad()
// some more initialization code

for item in items {
let annotation = IdentifiedMKPointAnnotation() // has only one additional property named "id"

annotation.coordinate = CLLocationCoordinate2D(latitude: item.spots[0].latitude!, longitude: item.spots[0].longitude!)
annotation.id = i

self.mapView.addAnnotation(annotation)

i += 1
}
}


// MARK: - MapViewDelegate
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
let item = self.items[(annotation as! IdentifiedMKPointAnnotation).id!]

let annotationView = MKAnnotationView(annotation: annotation, reuseIdentifier: "")
//annotationView.canShowCallout = false
//annotationView.isEnabled = false

let imageView = UIImageView()
imageView.frame.size = CGSize(width: 40, height: 40)
imageView.layer.cornerRadius = 20
imageView.layer.masksToBounds = true
imageView.af_setImage(withURL: URL(string: item.images.count > 0 ? item.images[0] : item.image!)!)
imageView.contentMode = .scaleAspectFill

//let gr = UIGestureRecognizer(target: self, action: #selector(annotationSelected(_:)))
//imageView.addGestureRecognizer(gr)
//imageView.isUserInteractionEnabled = true

//let button = UIButton()
//button.frame.size = CGSize(width: 40, height: 40)
//button.setImage(#imageLiteral(resourceName: "play_arrow"), for: .normal)
//button.addTarget(self, action: #selector(annotationSelected(_:)), for: .touchUpInside)

annotationView.addSubview(imageView)
//annotationView.addSubview(button)

return annotationView
}

func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
performSegue(withIdentifier: "showDetail", sender: self.items[(view.annotation as! IdentifiedMKPointAnnotation).id!])

view.setSelected(false, animated: false)
}

func annotationSelected(_ sender: UIImageView) {
performSegue(withIdentifier: "showDetail", sender: self.items[((sender.superview as! MKAnnotationView).annotation as! IdentifiedMKPointAnnotation).id!])
}

对于为什么 Action 没有/没有触发有什么想法吗?

最佳答案

如果注释的 title 为空,则不会调用 didSelect 委托(delegate)。试试下面的代码。

let annotation = IdentifiedMKPointAnnotation()
annotation.title = "title"

关于ios - didSelect for MKAnnotationView 未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45844181/

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