gpt4 book ai didi

ios - 自定义标注 View 内的按钮没有响应(Swift)

转载 作者:可可西里 更新时间:2023-11-01 01:06:50 27 4
gpt4 key购买 nike

我创建了一个自定义的 MKPinAnnotationView:

func mapView(mapView: MKMapView!, viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView! {
if annotation is MKUserLocation {
//return nil so map view draws "blue dot" for standard user location
return nil
}

let reuseId = "pin"
var pinView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId) as? MKPinAnnotationView

if pinView == nil {
pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
pinView!.canShowCallout = false
pinView!.animatesDrop = true
pinView!.pinColor = .Red
pinView!.draggable = true;
} else {
pinView!.annotation = annotation
}

return pinView
}

然后我稍后用这样的按钮向它添加一个 subview :

func mapView(mapView: MKMapView!, didSelectAnnotationView view: MKAnnotationView!) {
view.addSubview(confirm)
}

问题是 subview 中的按钮根本没有响应。是什么原因造成的?我已经尝试过启用 userInteraction。谢谢

最佳答案

不确定这是否适合或有帮助,但在我的情况下,我设置了类似的代码

pinView!.canShowCallout = true

然后,如果您想要一种简单的方法来捕捉按钮点击,我会在我的 ViewContriller 中放置一个函数:

func buttonClicked (sender : UIButton!) {
println("Button Clicked")
}

虽然听起来您想做些不同的事情。

Opps.. 在之前的回答中,我忘记了我在

上方添加了按钮
return pinView

....

    let button : UIButton = UIButton.buttonWithType(UIButtonType.DetailDisclosure) as UIButton
button.addTarget(self, action: "buttonClicked:", forControlEvents: UIControlEvents.TouchUpInside)
pinView!.rightCalloutAccessoryView = button
return pinView

现在 buttonClicked 函数可以捕获标注。

关于ios - 自定义标注 View 内的按钮没有响应(Swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24582706/

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