隐藏导航栏时如何启用滑动手势?

use*_*242 1 uinavigationbar uinavigationcontroller uigesturerecognizer ios swift

我一直试图解决这个问题很长一段时间,但无法弄清楚。我有当前的设置:

在此处输入图片说明

在每个视图控制器中,我都隐藏了导航栏,如下所示:

        self.navigationController?.setNavigationBarHidden(true, animated: true)
Run Code Online (Sandbox Code Playgroud)

问题是我在隐藏导航栏的视图控制器上松开了滑动手势。我需要启用动画并且不能使用:

    self.navigationController?.navigationBar.isHidden = true
    self.navigationController?.isNavigationBarHidden = true 
Run Code Online (Sandbox Code Playgroud)

任何帮助都会很棒,因为我相信很多人都遇到过这个问题。谢谢!

use*_*242 6

答案如下:只需继承您的 NavigationController 并执行以下操作。

  import UIKit

class YourUINavigationController: UINavigationController {
        override func viewDidLoad() {
            super.viewDidLoad()
            interactivePopGestureRecognizer?.delegate = self
        }
    }

    extension YourUINavigationController: UIGestureRecognizerDelegate {
        func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
            return viewControllers.count > 1
        }
    }
Run Code Online (Sandbox Code Playgroud)