gpt4 book ai didi

ios - MKAnnotationView subview 上的 UITapGestureRecognizer 不起作用。 swift

转载 作者:行者123 更新时间:2023-11-29 02:32:26 25 4
gpt4 key购买 nike

我有一个带有图像 subview 的 MKAnnotationView

我尝试向它添加一个 UITapGestureRecognizer 但没有响应

var tapGestureRecognizer = UITapGestureRecognizer(target: self, action: "annotationClicked:")                    
imageView.userInteractionEnabled = true
imageView.addGestureRecognizer(tapGestureRecognizer)
pinView.addSubview(imageView)
pinView.bringSubviewToFront(imageView)

我不知道为什么

最佳答案

要对注释 View (leftCalloutAccessoryViewrightCalloutAccessoryView)的点击使用react,您必须将 View 创建为 UIControl 的后代。然后就可以实现MKMapViewDelegate协议(protocol)的calloutAccessoryControlTapped方法了。无需使用手势识别器。

这里是一段代码,它添加了一个按钮作为 pinAnnotation 的标注附件:

func mapView(mapView: MKMapView!, viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView! {
if annotation is PinAnnotation {
let pinAnnotationView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: "myPin")

pinAnnotationView.pinColor = .Purple
pinAnnotationView.draggable = true
pinAnnotationView.canShowCallout = true
pinAnnotationView.animatesDrop = true

// button as callout accessory
let deleteButton = UIButton.buttonWithType(UIButtonType.Custom) as UIButton
deleteButton.frame.size.width = 44
deleteButton.frame.size.height = 44
deleteButton.backgroundColor = UIColor.redColor()
deleteButton.setImage(UIImage(named: "trash"), forState: .Normal)

pinAnnotationView.leftCalloutAccessoryView = deleteButton

return pinAnnotationView
}

return nil
}

func mapView(mapView: MKMapView!, annotationView view: MKAnnotationView!, calloutAccessoryControlTapped control: UIControl!) {
if let annotation = view.annotation as? PinAnnotation {
self.mapView.removeAnnotation(annotation)
}
}

关于ios - MKAnnotationView subview 上的 UITapGestureRecognizer 不起作用。 swift ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26719677/

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