我可以将 UITapGestureRecognizer 添加到我的控制器 self.view,但不能添加到任何自定义视图



我的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。在这里,等级也很重要。

如果您在circleViewtestView的顶部有任何UIView,那么它将不起作用。

除此之外,第三行有效是因为您要将UITapGestureRecognizer添加到UIViewControllersuperview中。

相关内容

最新更新