iOS自定义NavigationBar后如何实现全屏右滑返回
来源:互联网 发布:魔兽3.35数据库 编辑:程序博客网 时间:2024/04/29 08:45
本文是在广州小码哥高级导师吖了个峥的文章《8行代码教你搞定导航控制器全屏滑动返回效果》的基础上进行了修改后的成果。原文链接附上:http://www.cocoachina.com/ios/20150811/12897.html
原文中的实现效果在某些情况下会出现一些Bug,例如只要手指在屏幕上滑动就会默认启用滑动返回效果,同时,在配合iOS原生导航栏时可可能出现各种错误,所以最好配合自己实现的NavigationBar使用,一般不会出现问题。本篇文章主要讲的便是如何在原文的基础上判别手指的滑动方向,实现右滑返回效果。
下面直接贴代码:
@interface HomeNavigationController ()<UIGestureRecognizerDelegate>@property (weak, nonatomic) UIPanGestureRecognizer *pan;@end@implementation HomeNavigationController- (void)viewDidLoad{ [super viewDidLoad]; id target = self.interactivePopGestureRecognizer.delegate; UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:target action:@selector(handleNavigationTransition:)]; pan.delegate = self; self.pan = pan; [self.view addGestureRecognizer:pan]; self.interactivePopGestureRecognizer.enabled = NO;}- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{ CGPoint point = [self.pan translationInView:self.view]; if (self.childViewControllers.count == 1) { //当只有一个自控制器时不可滑动 return NO; } else if (point.x <= 8) { //当滑动是向右滑的时候,不可滑动 return NO; } return YES;}
关于手势滑动的部分,可以参看原文,这里主要讲的是手势方法代理中的部分。UIPanGestureRecognizer是拖动手势,本身不支持滑动方向的判别,所以需要我们自己通过代码来判断UIPanGestureRecognizer拖动手势的滑动方向,网上常见的方法是在拖动手势的action中判断,但是由于本文中介绍的方法比较特殊,action调用的是系统自带的方法,我们无法更改,所以只能退而求其次的在代理方法中进行判断。
通过代码我们可以取得一个Point属性,这是一个结构体数据,有x,y两种属性,当手势拖动右滑的时候x>0,左滑x<0,当点击屏幕是x = 0,上滑下滑同理,而且随着手势滑动的速度越快,x,y的绝对值就越大,通过这种方法就可以轻松的判断手势滑动的方向。而且通过判断x的大小,可以设置触发右滑返回的难度。
0 0
- iOS自定义NavigationBar后如何实现全屏右滑返回
- iOS 实现全屏右滑返回功能解析!
- iOS-全屏右滑返回手势
- iOS | 全屏右滑返回详解
- iOS 自定义导航栏pop返回手势,全屏右滑返回
- iOS-右滑返回,利用Runtime添加全屏Pop手势
- UINavigationController全屏右滑返回
- 自定义返回按钮后,右滑返回功能失效解决方法
- iOS 自定义返回按钮,仍实现右滑返回的功能.
- iOS 7.0实现右滑返回
- iOS 右滑返回
- iOS右滑返回
- 全屏右滑手势实现
- 自定义NavigationBar返回按钮
- Swift NavigationBar隐藏后的右滑手势
- ios7之后自定义返回按钮后,右滑返回功能失效解决方法
- ios7自定义返回按钮后,右滑返回功能失效解决方法
- 自定义nav返回按钮后,自带的右滑返回功能失效解决方法
- GCC编译器的使用
- 用 TouchDelegate 扩大子 View 的点击区域
- 多进程--有道笔记整理
- linux下搭建javaweb
- ORACLE工作机制
- iOS自定义NavigationBar后如何实现全屏右滑返回
- oracle查询,依据一个字段的值,去判断是否查另一个值--有道笔记整理
- 使用ab进行页面的压力测试
- 图像检索:基于形状特征的算法
- xocode 联调iphone5 8.3系统出现崩溃
- 简单的安卓手势处理类
- Otto 应用入门
- 用apache的http包工具进行通信.(java)--有道笔记整理
- 金蝶K3 V12.0 常用数据表(整理)