简体   繁体   English

UITapGestureRecognizer无法在navigationBar titleView中的UIView上使用?

[英]UITapGestureRecognizer not working on UIView in the navigationBar titleView?

I am trying to add tapGesture on navigationBar titleView but not getting any event. 我想补充tapGesturenavigationBar titleView ,但没有得到任何事件。 Please tell me how to resolve this issue. 请告诉我如何解决此问题。

 let titleView = UIView()
 titleView.frame = CGRect(x: 0, y: 0, width: 100, height: 60)
 titleView.backgroundColor = UIColor.yellow

 let profileImageView = UIImageView()
 profileImageView.contentMode = .scaleAspectFill
 profileImageView.layer.cornerRadius = 20
 profileImageView.clipsToBounds = true
 profileImageView.loadImageUsingCacheWithUrlString(urlString: user.image)
 titleView.addSubview(profileImageView)
 profileImageView.translatesAutoresizingMaskIntoConstraints = false
 profileImageView.leftAnchor.constraint(equalTo: titleView.leftAnchor).isActive = true
 profileImageView.centerYAnchor.constraint(equalTo: titleView.centerYAnchor).isActive = true
 profileImageView.widthAnchor.constraint(equalToConstant: 40).isActive = true
 profileImageView.heightAnchor.constraint(equalToConstant: 40).isActive = true

 let nameLabel = UILabel()
 nameLabel.text = user.name
 nameLabel.font = UIFont(name: "HelveticaNeue-Medium", size: 17)
 titleView.addSubview(nameLabel)
 nameLabel.translatesAutoresizingMaskIntoConstraints = false
 nameLabel.leftAnchor.constraint(equalTo: profileImageView.rightAnchor, constant: 8).isActive = true
 nameLabel.centerYAnchor.constraint(equalTo: profileImageView.centerYAnchor).isActive = true
 nameLabel.rightAnchor.constraint(equalTo: titleView.rightAnchor).isActive = true
 nameLabel.heightAnchor.constraint(equalTo: profileImageView.heightAnchor).isActive = true

 self.navigationItem.titleView = titleView
 titleView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(showChatTableViewController)))

Make sure to set isUserInteractionEnabled to true . 确保将isUserInteractionEnabled设置为true By default it true but if it's not working in your case then try to set true 默认情况下为true,但如果在您的情况下不起作用,请尝试设置为true

Make sure to debug your code and check that after adding titleView are you able to print out self.navigationItem.titleView ? 确保调试代码,并检查添加titleView后是否可以打印出self.navigationItem.titleView

let titleView = UIView()
titleView.frame = CGRect(x: 0, y: 0, width: 100, height: 60)
titleView.backgroundColor = UIColor.yellow
titleView.isUserInteractionEnabled = true

self.navigationItem.titleView = titleView
titleView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(showChatTableViewController)))

@objc func showChatTableViewController() {
    print("tapped")
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM