Swift - 监听返回按钮及侧滑返回事件

2021-10-18  本文已影响0人  KingWorld

今天记录一下监听返回按钮及侧滑返回事件的方法。

项目中,有些特殊的需求,需要监听左上角返回按钮的触发事件,之前的遇到这种问题,本能的想到重写leftBarButtonItem,但是重写后,侧滑事件就会被禁止,即使强制开启侧滑,但是侧滑事件返回后,并没有触发我们的特殊需求。

在不重写leftBarButtonItem的前提下,基于这种特殊需求,我拦截了系统的按钮返回事件和侧滑返回事件,实现一个代理,来统一管理返回事件中,需要实现的特殊需求。而为了不侵入项目,将此协议,放在扩展汇中。在需要触发返回事件的控制器中,调用协议方法即可。

协议:

/// 导航返回协议
@objc protocol NavigationProtocol {
    /// 导航将要返回方法
    ///
    /// - Returns: true: 返回上一界面, false: 禁止返回
    @objc optional func navigationShouldPopMethod() -> Bool
}

控制器扩展中,实现此协议

导航控制器中,遵守 UINavigationBarDelegate, UIGestureRecognizerDelegate, 重写

public func navigationBar(_ navigationBar: UINavigationBar, shouldPop item: UINavigationItem) -> Bool {}

重写此协议方法的目的是拦截返回按钮事件;

重写

public func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {}

重写此协议方法的目的是拦截侧滑返回事件。

具体实现方法,请下载 demo,密码:vh8t

有个朋友说我用百度云太low,其实我就是懒而已。。。

在这里提供下Github地址:https://github.com/linjieYang/NavigationGoBack
————————————————
版权声明:本文为CSDN博主「LJ_Y」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/a645258072/article/details/80192020

上一篇下一篇

猜你喜欢

热点阅读