iOS Objective-C 右滑返回手势
来源:互联网 发布:手机铃声剪切软件 编辑:程序博客网 时间:2024/04/30 15:07
iOS 7 之后,Apple增加了屏幕边缘右滑返回交互的支持,然而iOS导航栏的返回按钮一定制,系统的右滑返回手势就失效了,但是这么顺畅的用户体验方式怎么可以没有呢。网上也有像FDFullscreenPopGesture的第三方,以下文章适合于简单的都有导航栏的情况:
解决问题必须先找到原因,才能对症下药:
原因:自定义返回按钮导致的该手势未起作用是因为在delegate阶段被阻断了。
解决方法有以下两种:
1、自己重新设置interactivePopGestureRecognizer的delegate以让手势继续下去,触发系统的动画action。
在baseNavigationController中添加如下代码:
self.interactivePopGestureRecognizer.delegate = (id)self;
运行程序,你会发现实现了右滑返回,但是滑着滑着你会发现在跟视图控制器上右滑之后,出现了严重的卡顿现象,此时是因为根视图控制器已经不需要触发右滑返回了,但是右滑的话就会出现卡顿,说明也触发了右滑返回,我们可以在导航控制器中做个筛选,让可以POP的控制器继续触发。
// 表示的意思是:当挡墙控制器是根控制器了,那么就不接收触摸事件,只有当不是根控制器时才需要接收事件. - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { return self.childViewControllers.count > 1; }
2、如果我们知道代理执行action的名字,则可以添加一个自定义的滑动手势,直接调用该系统action。(这就是我们实现整个屏幕右滑返回功能)
打印出系统自带的手势:
// 打印系统自带的手势 NSLog(@"%@",self.interactivePopGestureRecognizer); /**打印结果 2016-10-24 11:41:37.390833 RightPopGestureDemo[887:325267] <UIScreenEdgePanGestureRecognizer: 0x100210df0; state = Possible; delaysTouchesBegan = YES; view = <UILayoutContainerView 0x10020f100>; target= <(action=handleNavigationTransition:, target=<_UINavigationInteractiveTransition 0x100210cb0>)>>
解决方法:
// 设置代理 id target = self.interactivePopGestureRecognizer.delegate; // 创建手势 UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:target action:@selector(handleNavigationTransition:)]; // 设置pan手势的代理 pan.delegate = self; // 添加手势 [self.view addGestureRecognizer:pan]; // 将系统自带的手势覆盖掉 self.interactivePopGestureRecognizer.enabled = NO;
0 0
- iOS Objective-C 右滑返回手势
- iOS-全屏右滑返回手势
- IOS 开启关闭右滑手势返回
- iOS 右滑手势返回上一级
- iOS右划返回手势
- 【iOS】右滑返回上一级界面手势
- iOS 开发 右滑手势返回及UIScrollView偏移问题
- iOS开发 指定页面关闭右滑手势返回功能
- iOS-右滑返回,利用Runtime添加全屏Pop手势
- 捕捉右滑返回手势
- 捕捉右滑返回手势
- iOS开发之自定义导航栏返回按钮右滑返回手势失效的解决
- iOS开发之自定义导航栏返回按钮右滑返回手势失效的解决
- iOS开发之自定义导航栏返回按钮右滑返回手势失效的解决
- iOS开发之自定义导航栏返回按钮右滑返回手势失效的解决
- iOS开发之自定义导航栏返回按钮右滑返回手势失效的解决
- iOS开发之自定义导航栏返回按钮右滑返回手势失效的解决
- iOS 自定义导航栏pop返回手势,全屏右滑返回
- Dijkstra算法实现有向图单源最短路径
- 微软官方caffe之 matlab接口配置
- Git SSH Key 生成步骤
- iOS - 内联函数简述
- Linux 定时任务
- iOS Objective-C 右滑返回手势
- 常用的数据结构(图)
- 玩转CSDN之自定义博客栏目
- 流式布局的实现
- php判断数组中有多少个值
- dubbo:使用maven打jar包异常解决。
- Android的四大组件:Activity、Service、Content Provider、Broadcast Receiver
- 算法库algorithm-4-hex
- 解决Ubuntu下Sublime Text 3无法输入中文