嵌套UIViews不接收触摸事件
问题描述:
我有一个自定义UIView
可以被简化的向下:嵌套UIViews不接收触摸事件
override func viewDidLoad() {
super.viewDidLoad()
self.view.addSubview(Node(x: 100, y: 100, width: 150, height: 40))
}
对于:
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)
}
}
第一(根)节点在视图控制器创建根节点,一切按预期工作。但是,对于根节点的孩子来说,没有任何工作。
为了确保我没有错误地使用UITapGestureRecognizer,我尝试覆盖Node类的原始touchesBegan
函数并执行一个简单的println(“tapped”)。然而问题仍然存在,似乎是子视图根本没有任何接触。
这可能是什么原因造成的?
答
听起来就像你只需要通过视图层次结构传递触摸事件。这个答案应该有所帮助:
+0
这并不能解决我的问题。首先,它对我来说似乎没有任何作用,但我也不想将消息发回给根。每个孩子都应该能够产生自己的孩子节点,而不与任何其他节点交互。或者我误解了一些东西? – Shimmen 2014-10-26 21:56:34
可能是一个长镜头,但尝试设置最小和触摸的最大#。 – Oxcug 2014-10-26 21:18:14
@theMonster现在尝试,但没有成功。问题是,即使原始输入处理函数touchesBegan没有触发,所以我很确定UITapGestureRecognizer没有错。 – Shimmen 2014-10-26 21:35:21