嵌套的UIViews不接收触摸事件

时间:2014-10-26 21:08:24

标签: ios uiview swift ios8

我有一个自定义UIView,可以简化为:

class Node: UIView {
    override init(frame: CGRect) {
        super.init(frame: frame)

        let tapGR = UITapGestureRecognizer(target: self, action: "createChildNode")
        addGestureRecognizer(tapGR)
        userInteractionsEnabled = true
    }

    /* ... */

    func createChildNode() {
        let childNode = Node(frame: self.bounds.offset(dx: 100, dy: 100))
        self.addSubview(childNode)
    }
}

在视图控制器中创建第一个(根)节点:

override func viewDidLoad() {
    super.viewDidLoad()
    self.view.addSubview(Node(x: 100, y: 100, width: 150, height: 40))
}

对于根节点,一切都按预期工作。但是,对于根节点的子节点,没有任何作用。

为了确保我没有错误地使用UITapGestureRecognizer,我试图覆盖Node类的原始touchesBegan函数并执行一个简单的println(" tapped")。然而问题仍然存在,似乎是子视图根本没有接触到任何接触。

导致这种情况的原因是什么?

1 个答案:

答案 0 :(得分:0)

听起来你只需要通过视图层次结构传递触摸事件。这个答案应该有所帮助:

https://stackoverflow.com/a/21436355/3259329