首页 > 解决方案 > 限制导航栏在按钮点击时隐藏

问题描述

我想在点击时隐藏导航栏。所以我使用了这种导航栏的方法。

 self.navigationController?.hidesBarsOnTap = true

屏幕上有 2 个按钮,当我点击该按钮执行某些操作时,它也会隐藏导航栏。我认为按钮单击视为点击。

你能告诉我,这是正确的行为吗?另外请让我知道是否有任何方法可以限制这一点。我不想在点击按钮时隐藏导航栏,屏幕的其余部分会很好。

标签: iosswiftbuttonuinavigationbaruitapgesturerecognizer

解决方案


您可以创建自定义按钮并处理触摸以启用/禁用隐藏栏,例如:

class BarHideOnTapButton : UIButton {
    weak var navigationController: UINavigationController?

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        super.touchesBegan(touches, with: event)
        self.navigationController?.hidesBarsOnTap = false
    }

    override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
        super.touchesEnded(touches, with: event)
        self.navigationController?.hidesBarsOnTap = true
    }
}

class ViewController: UIViewController {
    @IBOutlet var button: BarHideOnTapButton?

    override func viewDidLoad() {
        super.viewDidLoad()

        self.button?.navigationController = self.navigationController

        self.navigationController?.hidesBarsOnTap = true
    }
...
}

推荐阅读