UIButton无法响应触摸

3

我有以下视图:

enter image description here

它的构建方式

UIViewController --> UIView(底部正方形)--> UIViewController(加载在底部正方形中)

在这个UIViewController中的按钮按下没有被触发。但是我在模拟器中按下时确实看到按钮有动画。

此外,当我将以下tap handler以编程方式添加到此UIViewController中的圆形UIImageView中时,它会响应:

func handleTap(sender: UITapGestureRecognizer? = nil) {
        print("tappable")
    }

let tap = UITapGestureRecognizer(target: self, action: #selector(NeighbourhoodViewController.handleTap(_:)))
userPopupView.userImageView.userInteractionEnabled = true
userPopupView.userImageView.addGestureRecognizer(tap)

我该如何捕捉这些按钮的操作?以下代码无效:
@IBAction func test(sender: AnyObject) {
        print("test")
    }

这行代码是连接到界面构建器中的UIButton的。

enter image description here


问题中的按钮或视图启用了用户交互吗? - TheValyreanGroup
是的,用户交互随处可见。在UIView上,在UIViewController上,在UIButton上。按钮也会以动画形式显示(按下时会被高亮等),表示已经接收到点击操作。 - Rutger Huijsmans
这个“test”方法是唯一与那些按钮的出口链接在一起的吗?请查看IB中的出口选项卡,确认没有冲突。 - TheValyreanGroup
添加了另一张图片。 - Rutger Huijsmans
我什么也没得到...很想知道这个问题的解决方案。 - TheValyreanGroup
发现在iOS 8.1上按按钮会导致崩溃。也许这个额外的信息能帮助找到解决方案。 - Rutger Huijsmans
1个回答

1
我找到了解决办法。我只需将ViewController添加到View中即可:

self.popupView.addSubview(userPopupView.view)

当它应该是:

self.addChildViewController(userPopupView)
self.popupView.addSubview(userPopupView.view)
userPopupView.didMoveToParentViewController(self)

现在它可以工作了!

1
还不对。正确的顺序是:addChildViewControlleraddSubviewdidMoveToParentViewController。只能按照这个顺序来做,其他方式都是不允许的。关于这一点有严格的规定。 - matt
谢谢Matt!我已经调整了我的答案。 - Rutger Huijsmans

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接