美文网首页iOS精品文章
ios 滑动返回的解决方案

ios 滑动返回的解决方案

作者: 我消失1314 | 来源:发表于2017-04-26 14:33 被阅读2026次

三种方法:方法1:系统自带的侧滑返回方法

2【8行代码教你搞定导航控制器全屏滑动返回效果】 |那些人追的干货

3:百度知道团队出品的全屏侧滑返回(github地址)

方案一 :开启使用系统自带的侧滑返回

iOS7之后系统提供了侧滑手势(interactivePopGestureRecognizer),即从屏幕左侧边缘滑起会pop回导航控制器栈的上个viewController。不过如果你自定义了UINavigationViewController或者自定义了返回按钮,系统自带的侧滑返回功能会失效。此时需要添加下面的代码解决:self.navigationController.interactivePopGestureRecognizer.delegate = (id)self;

缺点:

•必须从屏幕边缘左侧滑起才会触发;

•一旦自定义导航控制器或者自定义返回按钮,就会失效。

•优点:实现简单,导航控制器中对全体viewController的侧滑功能可控,系统API绝对安全可靠,无手势冲突

•缺点:侧滑范围局限于左侧

•适用需求:只需左侧小范围触发侧滑时的首选实现方案。

•注:以上代码是强制开启,而系统的侧滑是默认开启的,如果在某一界面 hidesBackButton,那么系统是禁止当前界面的侧滑返回。

•如果实现了以上代码,属于强制开启,那么就算当前界面hidesBackButton,侧滑功能一样开启,通过上面的代理方法可以做到灵活控制哪个界面是否开启侧滑。方案二极其简单取巧的方法iOS7之后是有侧滑返回手势功能的。注意,也就是说系统已经定义了一种手势,并且给这个手势已经添加了一个触发方法(重点)。但是,系统的这个手势的触发条件是必须从屏幕左边缘开始滑动。我们取巧的方法是自己写一个支持全屏滑动的手势,而其触发方法系统已经有,没必要自己实现pop的动画,所以直接就把系统的触发处理方法作为我们自己定义的手势的处理方法。#import "ViewController.h"@interface ViewController ()@end

@implementation ViewController

- (void)viewDidLoad

{

[super viewDidLoad];

id target = self.navigationController.interactivePopGestureRecognizer.delegate;

// handleNavigationTransition:为系统私有API,即系统自带侧滑手势的回调方法,我们在自己的手势上直接用它的回调方法

UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:target action:@selector(handleNavigationTransition:)];

panGesture.delegate = self; // 设置手势代理,拦截手势触发

[self.view addGestureRecognizer:panGesture];

// 一定要禁止系统自带的滑动手势

self.navigationController.interactivePopGestureRecognizer.enabled = NO;

}

// 什么时候调用,每次触发手势之前都会询问下代理方法,是否触发

// 作用:拦截手势触发

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer

{

// 当当前控制器是根控制器时,不可以侧滑返回,所以不能使其触发手势

if(self.navigationController.childViewControllers.count == 1)

{

return NO;

}

return YES;

}

@end

优点:最简洁的全屏侧滑实现,导航控制器中对全体viewController的侧滑功能可控

缺点:从右边忘左边划动也能触发侧滑操作,有手势冲突,并不完美。且调用官方私有API

另外:正是缺点的所在,和Cell的侧滑删除手势也是有冲突的,也就是说,免不了需要解决手势的冲突。

适用需求:最好不用,毕竟缺点明显。(不过这个实现思路,确实值得称赞!)

方法三实现(集成最简单、功能最全面):

去上面的链接地址下载DEMO,具体详情见github

转载、

1.iOS侧滑返回三种实现方式及优劣比较

2.iOS使其支持侧滑返回

3.iOS之手势滑动返回功能-b

相关文章

  • ios 滑动返回的解决方案

    三种方法:方法1:系统自带的侧滑返回方法 2【8行代码教你搞定导航控制器全屏滑动返回效果】 |那些人追的干货 3:...

  • 全屏滑动返回

    1.导航控制器自带了滑动返回(iOS7) 2.但是设置界面没有滑动返回功能 3.恢复滑动返回 分析:为什么滑动返回...

  • iOS 手势返回

    iOS 手势返回 BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势主流App...

  • iOS 全屏返回

    iOS 全屏返回 BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势主流App...

  • iOS 右滑返回

    iOS 右滑返回 BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势主流App...

  • iOS 侧滑返回

    iOS 侧滑返回 BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势主流App...

  • iOS 侧滑返回详解

    iOS 侧滑返回详解 BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势主流A...

  • iOS 侧滑返回详解

    iOS 侧滑返回 BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势主流App...

  • iOS 全屏手势返回

    BBGestureBack BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势...

  • iOS 右滑返回

    BBGestureBack BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势...

网友评论

    本文标题:ios 滑动返回的解决方案

    本文链接:https://www.haomeiwen.com/subject/kimizttx.html