1

在我当前的项目中,我使用了一个主要的 UINavigationController 并且我已经推送了我想要呈现的每个控制器。此外,我已经从 UINavigationController 的默认用户体验中启用了弹出手势,当我在屏幕的左侧边缘滑动时,它会弹出我的视图控制器并且一切正常。

self.navigationController?.interactivePopGestureRecognizer?.isEnabled = false
self.navigationController?.interactivePopGestureRecognizer?.delegate = self

extension MyCustomViewController: UIGestureRecognizerDelegate{
    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
        return true
    }

    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldBeRequiredToFailBy otherGestureRecognizer: UIGestureRecognizer) -> Bool {
        return gestureRecognizer.isKind(of: UIScreenEdgePanGestureRecognizer.self)
    }
}

但在某些情况下,我需要在滑动 ViewController 时处理特定的操作。而不是弹出我的 ViewController,我想使用这个功能:

extension UINavigationController {
    func backToViewController(vc: Swift.AnyClass) {
        for element in viewControllers as Array {
            if element.isKind(of: vc) {
                self.popToViewController(element, animated: true)
                break
            }
        }   
    }
}
4

0 回答 0