UINavigationControllerBackButtonHandlerProtocol

@protocol UINavigationControllerBackButtonHandlerProtocol <NSObject>

拦截系统默认返回按钮事件,有时候需要在点击系统返回按钮,或者手势返回的时候想要拦截事件,比如要判断当前界面编辑的的内容是否要保存,或者返回的时候需要做一些额外的逻辑处理等等。

  • 点击系统返回按钮或者手势返回的时候是否要相应界面返回(手动调用代码pop排除)。支持参数判断是点击系统返回按钮还是通过手势触发 一般使用的场景是:可以在这个返回里面做一些业务的判断,比如点击返回按钮的时候,如果输入框里面的文本没有满足条件的则可以弹 Alert 并且返回 NO 来阻止用户退出界面导致不合法的数据或者数据丢失。

    Declaration

    Objective-C

    - (BOOL)shouldPopViewControllerByBackButtonOrPopGesture:(BOOL)byPopGesture;

    Swift

    optional func shouldPopViewController(byBackButtonOrPopGesture byPopGesture: Bool) -> Bool
  • 当自定义了leftBarButtonItem按钮之后,系统的手势返回就失效了。可以通过forceEnableInteractivePopGestureRecognizer来决定要不要把那个手势返回强制加回来。当 interactivePopGestureRecognizer.enabled = NO 或者当前UINavigationController堆栈的viewControllers小于2的时候此方法无效。

    Declaration

    Objective-C

    - (BOOL)forceEnableInteractivePopGestureRecognizer;

    Swift

    optional func forceEnableInteractivePopGestureRecognizer() -> Bool