我有一个自定义的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
}
然后我用这样的按钮添加一个子视图:
func mapView(mapView: MKMapView!, didSelectAnnotationView view: MKAnnotationView!) {
view.addSubview(confirm)
}
问题是子视图内的按钮根本没有响应。可能导致什么?我已经尝试过启用userInteraction。 感谢
答案 0 :(得分:3)
不确定这是否合适或有帮助但在我的情况下我在哪里设置类似的代码
pinView!.canShowCallout = true
然后如果你想要一个简单的方法来捕捉按钮点击,我在我的ViewContriller中放了一个func:
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 func可以捕获标注。