为啥我的 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#?

为啥我的 PHP 会话会死掉?为啥我不能恢复它们?

为啥我的碰撞测试总是返回“真”,为啥图像矩形的位置总是错误的 (0, 0)?

NPM 启动错误上的 ENOENT。为啥我会收到此错误,为啥要查找“我的图片”目录?

为啥 main 前面有一个 int ,为啥我的教授会排除它? [复制]

为啥我的 Entity Framework Code First 代理集合为空,为啥我不能设置它?