【发布时间】:2014-10-26 21:08:23
【问题描述】:
我有一个自定义的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")。但是问题仍然存在,似乎子视图根本没有收到任何触摸。
这可能是什么原因造成的?
【问题讨论】:
-
可能有点远,但请尝试设置最小和最大触摸次数。
-
@theMonster 现在尝试了,但没有成功。问题是,甚至原始输入处理函数 touchesBegan 都没有触发,所以我很确定 UITapGestureRecognizer 没有任何问题。