博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
系统返回按钮事件拦截
阅读量:6948 次
发布时间:2019-06-27

本文共 1826 字,大约阅读时间需要 6 分钟。

  hot3.png

 

//主要实现原理@implementation UINavigationController (ShouldPopOnBackBtn)- (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item{    BOOL shouldPop = YES;    // 看一下当前控制器有没有实现代理方法 currentViewControllerShouldPop    // 如果实现了,根据当前控制器的代理方法的返回值决定    // 没过没有实现 shouldPop = YES    UIViewController* currentVC = [self topViewController];    if([currentVC respondsToSelector:@selector(currentViewControllerShouldPop)]) {        shouldPop = [currentVC currentViewControllerShouldPop];    }    if(shouldPop)    {        dispatch_async(dispatch_get_main_queue(), ^{            [self popViewControllerAnimated:YES];        });        // 这里要return, 否则这个方法将会被再次调用        return YES;    }    else    {        // 让系统backIndicator 按钮透明度恢复为1        for(UIView *subview in [navigationBar subviews]) {            if(0. < subview.alpha && subview.alpha < 1.) {                [UIView animateWithDuration:.25 animations:^{                    subview.alpha = 1.;                }];            }        }        return NO;    }}@end//如何使用// 第一步:导入分类头文件#import "UIViewController+BackBtnEventIntercept.h"// 第二步:实现代理方法,return NO 则拦截了系统的返回按钮事件- (BOOL)currentViewControllerShouldPop{    return NO;}如何禁用系统?右滑返回手势- (void)viewDidAppear:(BOOL)animated{    [super viewDidAppear:animated];    // 为当前控制器禁用?右滑返回手势    if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {        self.navigationController.interactivePopGestureRecognizer.enabled = NO;    }}- (void)viewWillDisappear:(BOOL)animated{    [super viewWillDisappear:animated];    // 为其他控制器开启?右滑返回手势    if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {        self.navigationController.interactivePopGestureRecognizer.enabled = YES;    }}

 

转载于:https://my.oschina.net/huqiji/blog/1139075

你可能感兴趣的文章
泛型小例子
查看>>
译文:C#中的弱事件(Weak Events in C#)
查看>>
抽象工厂模式
查看>>
Maven
查看>>
Unix-Linux 编程实践教程 第八章 小结
查看>>
linux下ElasticSearch安装及问题
查看>>
2019测试指南-web应用程序安全测试(二)指纹Web应用程序
查看>>
Quartus Prime 下载程序到FPGA流程
查看>>
php instanceof 运算符
查看>>
5月3日云栖精选夜读丨寒武纪重磅发布首款AI云芯片,阿里专家告诉你必须注意的Java编程细节...
查看>>
机器学习从业人员到底做什么?
查看>>
MyBatis mapper.xml处理sql中的 大于,小于,大于等于,小于等于
查看>>
java 受检异常和非受检异常
查看>>
GC垃圾回收机制
查看>>
rsync通过服务同步、linux系统日志
查看>>
Redlock:Redis分布式锁最牛逼的实现
查看>>
一篇文章带你解析,乐观锁与悲观锁的优缺点
查看>>
阿里云如何打破Oracle迁移上云的壁垒
查看>>
小技巧:如何突破某些网站只能登陆后才能进行文字拷贝的限制
查看>>
Spring Boot教程(十八)使用Spring StateMachine框架实现状态机
查看>>