iOS7以后的侧滑返回上一页
2015-05-31 21:14
555 查看
我们知道,iOS7以后,导航控制器默认带了侧滑返回功能,但是仅限于屏幕边缘。而且在你自定义leftBarButtonItem等之后侧滑效果就会消失。这种问题怎么解决呢?
首先,我们先来看看系统的这种手势是什么?
打印结果:
解决办法:自定义一个滑动手势,当手势触发时,调用系统手势的target的相应方法。经过验证,这个target就是interactivePopGestureRecognizer.delegate,方法名是:handleNavigationTransition:
上代码:
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{
if (self.childViewControllers.count == 1) {
return NO;
}
return YES;
}
参考资料
http://www.cocoachina.com/ios/20150401/11459.html http://www.jianshu.com/p/737924684695 http://www.jianshu.com/p/c0b7a97b3b0e
首先,我们先来看看系统的这种手势是什么?
NSLog(@"%@",self.interactivePopGestureRecognizer);//这里的self是项目中用的navigationController
打印结果:
<UIScreenEdgePanGestureRecognizer: 0x15ecc9e0; state = Possible; delaysTouchesBegan = YES; view = <UILayoutContainerView 0x15da65a0>; target= <(action=handleNavigationTransition:, target=<_UINavigationInteractiveTransition 0x15ecc900>)>>
解决办法:自定义一个滑动手势,当手势触发时,调用系统手势的target的相应方法。经过验证,这个target就是interactivePopGestureRecognizer.delegate,方法名是:handleNavigationTransition:
上代码:
id taget = self.interactivePopGestureRecognizer.delegate; UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc]initWithTarget:taget action:@selector(handleNavigationTransition:)]; [self.view addGestureRecognizer:pan]; pan.delegate = self; //因为根控制器不需要滑动返回,所以要通过代理方法处理一下 self.interactivePopGestureRecognizer.enabled = NO; //这句不能忘啊!!!!关掉系统手势 //手势代理方法
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{
if (self.childViewControllers.count == 1) {
return NO;
}
return YES;
}
参考资料
http://www.cocoachina.com/ios/20150401/11459.html http://www.jianshu.com/p/737924684695 http://www.jianshu.com/p/c0b7a97b3b0e
相关文章推荐
- iOS 中使用 XIB 自定义cell 的两种方法 以及 编译出现常见 的错误 ++++(xcode6.0之后)
- IOS去掉字符串中的html标签的方法
- iOS编程——多态
- iOS开发笔记3:XML/JSON数据解析
- 远程SSH登陆方式备份和导入IOS系统和配置文件
- iOS编程——类的继承
- 适配iOS 8
- 开门见iOS(3)-了解Xcode
- iOS的init、loadView、 viewDidLoad、viewDidUnload的关系
- IOS自制类似于下拉框的控件
- iOS button点击更换图片
- 常用的iOS
- iOS编程——隐藏和封装
- iOS编程——预编译命令#include、#import和@class
- ios FMDB初体验之增删改查
- ios开发-Autolayout
- iOS NSNotificationCenter 使用姿势详解
- 浅谈iOS面对对象之继承
- iOS用VFL语言实现屏幕适配
- 浅谈iOS面对对象之合成存取方法