我的ViewController符合UIGestureRecognizerDelegate。
我在此视图控制器中创建了各种视图。一个名为 circleView 的自定义视图和一个名为 testView 的常规 UIView。
我有以下函数,它是从视图DidLoad 调用
的func addTapGesturesOnNumberPadDisplay() {
if tapGestureRecognizerNumberPadView == nil {
tapGestureRecognizerNumberPadView = UITapGestureRecognizer(target: self, action: "handleTap:")
tapGestureRecognizerNumberPadView!.delegate = self
//self.circleView!.addGestureRecognizer(tapGestureRecognizerNumberPadView!) // 1
//self.testView!.addGestureRecognizer(tapGestureRecognizerNumberPadView!) // 2
self.view.addGestureRecognizer(tapGestureRecognizerNumberPadView!) // 3
}
}
此代码有效,第 3 行处于活动状态。我的func handleTap(sender: UITapGestureRecognizer) {
被触发了。但是,如果我注释掉第 3 行,并使第 1 行或第 2 行处于活动状态...... handleTap:
永远不会被击中。
这是为什么呢?
确保userInteractionEnabled
设置为您的UIView's
true。在这里,等级也很重要。
如果您在circleView
和testView
的顶部有任何UIView
,那么它将不起作用。
除此之外,第三行有效是因为您要将UITapGestureRecognizer
添加到UIViewController
的superview
中。