ios 滑动返回 pop
2016-05-03 11:13
501 查看
interactivePopGestureRecognizer是iOS7推出的解决
VeiwController滑动后退的新功能,虽然很实用,但是坑也很多啊,用过的同学肯定知道问题在哪里,所以具体问题我就不描述了,这里只给出如何完美解决
interactivePopGestureRecognizer卡住的问题.
当然我们要自定义UINavigationController来解决这个问题:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | #import "MMNavController.h" @interface MMNavController () { } @end @implementation MMNavController - (id)initWithRootViewController:(UIViewController *)rootViewController { self = [super initWithRootViewController:rootViewController]; if (self) { // Custom initialization } return self; } - (void)viewDidLoad { if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)]) { self.interactivePopGestureRecognizer.delegate = (id)self; } } - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated { if ( [self respondsToSelector:@selector(interactivePopGestureRecognizer)] && animated == YES ) { self.interactivePopGestureRecognizer.enabled = NO; } [super pushViewController:viewController animated:animated]; } - (NSArray *)popToRootViewControllerAnimated:(BOOL)animated { if ( [self respondsToSelector:@selector(interactivePopGestureRecognizer)] && animated == YES ) { self.interactivePopGestureRecognizer.enabled = NO; } return [super popToRootViewControllerAnimated:animated]; } - (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated { if( [self respondsToSelector:@selector(interactivePopGestureRecognizer)] ) { self.interactivePopGestureRecognizer.enabled = NO; } return [super popToViewController:viewController animated:animated]; } #pragma mark UINavigationControllerDelegate - (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animate { if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)]) { self.interactivePopGestureRecognizer.enabled = YES; } } -(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer { if ( gestureRecognizer == self.interactivePopGestureRecognizer ) { if ( self.viewControllers.count < 2 || self.visibleViewController == [self.viewControllers objectAtIndex:0] ) { //跟试图控制器页面 return NO; } } return YES; } |
相关文章推荐
- iOS应用崩溃日志分析
- Ios正则表达式的用法
- iOS开发系列--并行开发其实很容易
- iOS程序更新后新特性介绍界面的实现
- iOS 字面量语法
- iOS7tableview下移
- iOS开发——你真的会用SDWebImage?
- 你真的会用SDWebImage?
- iOS中视频播放的学习
- 《Motion Design for iOS》(九)
- iOS开发中 AVPlayer 深入浅出
- iOS iTuns Connect官方配置教程
- iOS自带AVPlayer视频播放器
- 【代码笔记】iOS-判断是否是iPhone5
- iOS_导航栏的navigationBar.hidden与navigationBarHidden的区别
- iOS开发--Xcode插件
- 关于iOS和OS X废弃的API你需要知道的一切
- iOS开发中常用到的加密方式
- iOS开发路线简述
- iOS中多线程的实现方案