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

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

项目中,有些特殊的需求,需要监听左上角返回按钮的触发事件,之前的遇到这种问题,本能的想到重写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 {}

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

关于调用:

1. 使用swift开发,在ViewController中,调用navigationShouldPopMethod方法,即可进行监听

2. 使用OC开发,需要在ViewController中遵守NavigationProtocol协议,再调用navigationShouldPopMethod方法,才可以进行监听

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

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

在这里提供下Github地址:https://github.com/linjieYang/NavigationGoBack

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值