UINavigationController侧滑返回失效

在 iOS 7 后,我们使用系统提供的 UINavigationController 时,都会带有一个左侧侧滑就返回上一级 ViewController 的功能。但是如果我们使用自定义的 UINavigationController 时,这个功能就会被取消。包括自定义了返回按钮、自定义了导航栏等等。

我们如果想要恢复这个功能,就需要在 UINavigationViewController 的代理方法中进行管理。

class NavigationViewController: UINavigationController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        //设置 NavigationViewController 的代理为自己
        self.interactivePopGestureRecognizer?.delegate = self
    }

}

// 扩展
extension NavigationViewController: UIGestureRecognizerDelegate {
    func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool {
        
        // 如果当前试图是根视图,强行返回会导致 bug。所以要判断子视图的数量。
        return self.childViewControllers.count > 1
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容