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

标签 ios xcode mkmapview swift mkannotationview

我创建了一个自定义 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/

相关文章:

ios - UIActivityViewController 在使用 sourceView 或 barButtonItem 的 iPad 上崩溃

ios - React Native 中的 Keyboard.dismiss 不会关闭键盘

iphone - 是否允许在单例类中为变量定义属性和综合?

xcode - 为什么 iPhone 5 不会倒转

ios - 强制 MKMapView 删除 MKOverlayRenderer

iOS:是否可以将注释放在 map 的中心并在注释始终保持在中心的情况下移动 map ?

ios - 快速放大位置

ios - 如何提交需要登录的App

jquery - 适用于 iOS 的 Cordova 应用程序不显示通过 ajax 加载的图像

ios - 在 xcode 上使用 sprite kit 创建黑洞