前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用UIPanGestureRecognizer手势全屏侧滑返回

利用UIPanGestureRecognizer手势全屏侧滑返回

作者头像
用户1451823
发布2018-09-13 15:41:22
1.5K0
发布2018-09-13 15:41:22
举报
文章被收录于专栏:DannyHoo的专栏

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1337768

在iOS开发中如果我们利用的navigationController(几乎每个项目都有吧!),当从根控制器跳转到下一个控制器再从下一个控制器返回的时候苹果为我们自带了侧滑返回的手势,但有两点需要注意:

注意点一:如果我们自定义了返回按钮那么苹果自带的侧滑返回手势会失效(现在App的返回按钮几乎都是自定义,没有像苹果自带App那样返回按钮都是自带的)。

注意点二:如果再根视图控制器也进行侧滑,那么程序会出现问题,无法再跳转到下一页。

要想避免上述两个注意点中的问题,我们需要自定义NavigationController,并在NavigationController中做些操作:

在viewDidLoad方法中:

self.delegate = self;

_popDelegate = self.interactivePopGestureRecognizer.delegate;

并且实现协议中的方法:

  • (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated

{

if (viewController == self.viewControllers0 ) {   // 如果显示的是根视图控制器

self.interactivePopGestureRecognizer.delegate = _popDelegate;

    } else

    {

self.interactivePopGestureRecognizer.delegate = nil;

    }

}

遵守的协议是:

UINavigationControllerDelegate

做了如上操作之后我们就可以顺利使用侧滑返回,但这样的侧滑是系统自带的只能侧滑屏幕左侧。本次博客的题目是利用UIPanGestureRecognizer手势全屏侧滑返回,我们要想实现全屏侧滑返回,就要添加UIPanGestureRecognizer这个手势,并且禁用系统自带侧滑手势。同样是在自定义的NavigationController中进行操作。

  • (void)viewDidLoad {

    super viewDidLoad;

// Do any additional setup after loading the view.

// 添加手势

UIPanGestureRecognizer * pan = [UIPanGestureRecognizer alloc initWithTarget:self.interactivePopGestureRecognizer.delegate action:@selector(handleNavigationTransition:)];

    pan.delegate = self;

    self.view addGestureRecognizer:pan;

// 系统自带手势失效

self.interactivePopGestureRecognizer.enabled = NO;

}

#pragma mark --- UIGestureRecognizerDelegate

  • (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{

// 如果不是根视图控制器就让侧滑手势有效,否则失效

if (self.childViewControllers.count > 1) {

return YES;

    }else{

return NO;

    }

}

同样如果是根视图控制器返回手势失效.

本次博客到此结束,谢谢阅读!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016年12月07日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档