带有标签 + 按钮的 UIView - 无法识别点击手势

UIView with label + button - Tap gesture not recognized

我在导航项标题视图中添加了标签和图像,如下所示 -

然后我添加了这三行代码,使标题可以点击。

    ....
    let recognizer = UITapGestureRecognizer(target: self, action: #selector(MyViewController.titleTapped(_:)))
    navView.isUserInteractionEnabled = true
    navView.addGestureRecognizer(recognizer)

还有这个titleTapped函数。

    @objc func titleTapped(_ tapGestureRecognizer: UITapGestureRecognizer) {
        print("Tapped")
    }

我做错了什么?

我尝试将手势识别器添加到标签和图像(分别)。那也没用。

谢谢。

100% 肯定在我的应用程序中工作并且经过良好测试。

 var tapGesture = UITapGestureRecognizer()

采纳您的观点并将 IBOutlet 设置为:

@IBOutlet weak var viewTap: UIView!     

在 viewDidLoad() 上编写漂亮的代码,例如:

tapGesture = UITapGestureRecognizer(target: self, action: #selector(self.myviewTapped(_:)))
tapGesture.numberOfTapsRequired = 1
tapGesture.numberOfTouchesRequired = 1
viewTap.addGestureRecognizer(tapGesture)
viewTap.isUserInteractionEnabled = true

识别点击手势时调用此方法

 @objc func myviewTapped(_ sender: UITapGestureRecognizer) {

if self.viewTap.backgroundColor == UIColor.yellow {
    self.viewTap.backgroundColor = UIColor.green
}else{
    self.viewTap.backgroundColor = UIColor.yellow
}
}

注意:在您的情况下,您必须确保查看哪个视图在前面,例如导航的 UILabel 或 UIView,然后将手势分配给 it.If 您的标签封面整个视图然后让我们尝试只给标签一个手势。

您的 NavView 没有框架,所以没有任何东西 "there" 可以点击。

添加这一行:

    // Create a navView to add to the navigation bar
    let navView = UIView()

    // new line
    navView.frame = CGRect(x: 0, y: 0, width: 200, height: 40)

    // Create the label
    let label = UILabel()

你应该在路上了。