微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我的 UITapGestureRecognizer 方法没有在 swift 中调用 Navigationbar titleView

如何解决为什么我的 UITapGestureRecognizer 方法没有在 swift 中调用 Navigationbar titleView

使用下面的代码,我可以在导航栏中获取标题图像,但 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)
    
    
}

解决方法

self.navigationItem.titleView?.addGestureRecognizer(titleTap)
self.navigationItem.titleView = logoImageView

你添加一个手势识别器,如果标题视图不是 nil,然后在下一行你立即将标题视图更改为完全不同的东西,它不会有一个手势识别器。

self.navigationItem.titleView = logoImageView
logoImageView.addGestureRecognizer(titleTap)

这一行:

self.navigationItem.titleView?.isUserInteractionEnabled = true

也是有问题的,因为:此时 titleView 可能是 nil,所以这一行什么都不做,无论如何你稍后更改标题视图。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。