为啥我的 UITapGestureRecognizer 方法没有快速调用 Navigationbar titleView
Posted
技术标签:
【中文标题】为啥我的 UITapGestureRecognizer 方法没有快速调用 Navigationbar titleView【英文标题】:Why My UITapGestureRecognizer method not calling for Navigationbar titleView in swift为什么我的 UITapGestureRecognizer 方法没有快速调用 Navigationbar titleView 【发布时间】:2021-04-21 08:01:53 【问题描述】:使用下面的代码,我可以在导航栏中获取标题图像,但 titlePressed
方法没有调用.. 如果我点击标题,我无法进入 HomeVC.. 请帮忙.. 我哪里错了
func setUpNavigationBar()
let logoImageView = UIImageView.init(image: #imageLiteral(resourceName: "pic-logo"))
logoImageView.tintColor = .darkGray
logoImageView.frame = CGRect(x:0.0,y:0.0, width:100,height:25.0)
logoImageView.contentMode = .scaleAspectFit
logoImageView.widthAnchor.constraint(equalToConstant: 200).isActive = true
logoImageView.heightAnchor.constraint(equalToConstant: 50).isActive = true
self.navigationItem.titleView?.isUserInteractionEnabled = true
let titleTap = UITapGestureRecognizer(target: self, action: #selector(titlePressed))
self.navigationItem.titleView?.addGestureRecognizer(titleTap)
self.navigationItem.titleView = logoImageView
@objc func titlePressed()
print("title clicked...")
let vc = StoryBoard.main.instantiateViewController(identifier: "HomeVC") as! HomeVC
self.navigationController?.pushViewController(vc, animated: true)
【问题讨论】:
请检查您的titleView是否有手势。 @Kudos,怎么样?以及在哪里检查 我在这里添加了self.navigationItem.titleView?.addGestureRecognizer(titleTap)
向 logoImageView 添加手势或将序列更改为 ```self.navigationItem.titleView = logoImageView self.navigationItem.titleView?.addGestureRecognizer(titleTap)
【参考方案1】:
self.navigationItem.titleView?.addGestureRecognizer(titleTap)
self.navigationItem.titleView = logoImageView
如果标题视图不为零,则添加手势识别器,然后在下一行立即将标题视图更改为完全不同的东西,它上面不会有手势识别器。
self.navigationItem.titleView = logoImageView
logoImageView.addGestureRecognizer(titleTap)
这一行:
self.navigationItem.titleView?.isUserInteractionEnabled = true
也是有问题的,因为:此时titleView很可能是nil,所以这一行不会做任何事情,而且你以后再改变title view。
【讨论】:
以上是关于为啥我的 UITapGestureRecognizer 方法没有快速调用 Navigationbar titleView的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的程序需要两行输入,为啥我的 GPA 计算错误 c#?
为啥我的碰撞测试总是返回“真”,为啥图像矩形的位置总是错误的 (0, 0)?
NPM 启动错误上的 ENOENT。为啥我会收到此错误,为啥要查找“我的图片”目录?