iOS7上leftBarButtonItem无法实现滑动返回的完美解决方案
来源:互联网 发布:淘宝新店流程 编辑:程序博客网 时间:2024/05/15 06:53
在iOS7上使用leftBarButtonItem却无法响应滑动返回事件的问题,一番谷歌,最后终于解决了,在这里把解决方案分享给大家。
在iOS7之前的系统,如果要自定义返回按钮,直接设置backBarButtonItem是不行的,有两种方式,一种是用leftBarButtonItem替代;一种是:
1
2
3
UIImage *backButtonImage = [[UIImage imageNamed:@
"Graphics/Shared/navigation_back_button.png"
] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, backButtonImage.size.height*2) forBarMetrics:UIBarMetricsDefault];
但是在iOS7系统中,自带了可以通过右滑返回上一级页面的手势,如果仅仅修改leftBarButtonItem是无法响应这个手势的。可以在pushViewController之后加入如下代码:
1
2
3
4
5
[_currentNav pushViewController:viewController animated:YES];
//开启iOS7的滑动返回效果
if
([_currentNav respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
_currentNav.interactivePopGestureRecognizer.delegate = nil;
}
这样即可完美解决iOS7上无法滑动的问题。
当然网上还有一种解决方法是在设置leftBarButtonItem之后加上:
1
2
self.navigationItem.backBarButtonItem = backButton;
self.navigationController.interactivePopGestureRecognizer.delegate = self;
但这两行代码必须放在viewWillAppear中,相比上一种方式要修改的代码更多,因此建议使用上一种方式。
响应了iOS7的滑动返回手势之后,我们还会发现一个问题,iOS7的滑动返回不会调用我们给leftBarButtonItem设置的回调,那么返回的事件如何捕捉呢?可以通过以下代码:
1
2
3
4
5
6
7
8
9
- (
void
)viewWillDisappear: (
BOOL
)animated
{
[super viewWillDisappear: animated];
if
(![[self.navigationController viewControllers] containsObject: self])
{
// the view has been removed from the navigation stack, back is probably the cause
// this will be slow with a large stack however.
}
}
至此,我们就完美解决了iOS7上使用leftBarButtonItem的滑动返回问题。
0 0
- iOS7上leftBarButtonItem无法实现滑动返回的完美解决方案
- iOS7上leftBarButtonItem无法实现滑动返回的完美解决方案
- iOS7上leftBarButtonItem无法实现滑动返回的完美解决方案
- iOS7上leftBarButtonItem无法实现滑动返回的完美解决方案
- iOS7上leftBarButtonItem无法实现滑动返回的完美解决方案
- iOS7上leftBarButtonItem无法实现滑动返回的完美解决方案
- iOS7上leftBarButtonItem无法实现滑动返回的完美解决方案
- iOS7上leftBarButtonItem无法实现滑动返回的完美解决方案
- iOS7上leftBarButtonItem无法实现滑动返回的完美解决方案(转)
- iOS开发--iOS7以上自定义leftBarButtonItem后系统滑动返回失效的完美解决方案
- iOS iOS7以上设置leftBarButtonItem后滑动返回实效
- IOS7滑动返回的纠结
- iOS7.1企业应用"无法安装应用程序 因为证书无效"的完美解决方案
- iOS7.1企业应用"无法安装应用程序 因为证书无效"的完美解决方案
- iOS7 Navgation的手势滑动返回功能
- iOS7滑动返回
- iOS7滑动返回
- iOS7滑动返回
- The following processes: -adb.exe cmd.exe -java.exe are locking the following directory:
- Objective-C 初级
- POJ 1330 Nearest Common Ancestors (LCA)
- 移动安全 - 安全军火库调查
- CATransition 的初级应用及type属性
- iOS7上leftBarButtonItem无法实现滑动返回的完美解决方案
- poj1160(区间DP)
- Mac osx 10.10系统下Navicat for MySQL的安装与配置
- mysql数据库修改表结构的sql语句
- iframe父子兄弟之间调用传值(contentWindow && parent)
- matting
- ios 画图总结
- 07注册界面和注册界面的逻辑
- 迭代器模式笔记