在iOS开发中,可以通过以下方法来区分是通过pop方法还是手势右滑关闭的:

  1. 通过UINavigationControllerDelegate方法来判断:实现UINavigationControllerDelegate代理方法navigationController:willShowViewController:animated:,在该方法中可以获取到即将显示的ViewController和当前的ViewController。当通过pop方法关闭时,即将显示的ViewController是当前的ViewController的前一个ViewController;而当通过手势右滑关闭时,即将显示的ViewController是当前的ViewController本身。可以通过比较这两个ViewController的引用来判断是通过pop方法还是手势右滑关闭的。
func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
    guard let viewControllers = navigationController.viewControllers else { return }
    
    let previousViewController = viewControllers.count >= 2 ? viewControllers[viewControllers.count - 2] : nil
    
    if previousViewController == viewController {
        // 通过pop方法关闭
    } else {
        // 通过手势右滑关闭
    }
}
  1. 通过侧滑手势识别器来判断:可以获取到UINavigationController的interactivePopGestureRecognizer属性,这是一个UIPanGestureRecognizer对象。可以通过添加手势识别器的代理来获取手势的状态,从而判断是通过pop方法还是手势右滑关闭的。
func viewDidLoad() {
    super.viewDidLoad()
    
    if let navigationController = navigationController {
        navigationController.interactivePopGestureRecognizer?.delegate = self
    }
}

extension YourViewController: UIGestureRecognizerDelegate {
    func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
        if gestureRecognizer == navigationController?.interactivePopGestureRecognizer {
            // 通过手势右滑关闭
        } else {
            // 其他手势
        }
        
        return true
    }
}

通过上述方法,你可以在UIViewController中区分是通过pop方法还是手势右滑关闭的

oc中viewcontroller如何区分是通过pop方法还是手势右滑关闭的

原文地址: http://www.cveoy.top/t/topic/hXH6 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录