关于iOS7之后自定义leftnavigationitem后手势无法响应问题的解决办法
来源:互联网 发布:宁采臣在唱歌淘宝店 编辑:程序博客网 时间:2024/05/22 10:14
下边那段话我觉得比较好的办法:
[_currentNav pushViewController:viewController animated:YES];
//开启iOS7的滑动返回效果
(加上这句话即可解决)
if ([_currentNav respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
_currentNav.interactivePopGestureRecognizer.delegate = nil;
}
但需要注意的是若是手势返回,则之前设置的leftnavigationitem回调不会调用,解决办法:
- (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却无法响应滑动返回事件的问题,一番谷歌,最后终于解决了,在这里把解决方案分享给大家。
在iOS7之前的系统,如果要自定义返回按钮,直接设置backBarButtonItem是不行的,有两种方式,一种是用leftBarButtonItem替代;一种是:
[plain]
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];
但第二种方法只能自定义返回按钮的背景和文字,如果要自定义上面的图标则不行。所以使用leftBarButtonItem是最佳方式。
但是在iOS7系统中,自带了可以通过右滑返回上一级页面的手势,如果仅仅修改leftBarButtonItem是无法响应这个手势的。可以在pushViewController之后加入如下代码:
[plain]
[_currentNav pushViewController:viewController animated:YES];
//开启iOS7的滑动返回效果
if ([_currentNav respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
_currentNav.interactivePopGestureRecognizer.delegate = nil;
}
这样即可完美解决iOS7上无法滑动的问题。
当然网上还有一种解决方法是在设置leftBarButtonItem之后加上:
[plain]
self.navigationItem.backBarButtonItem = backButton;
self.navigationController.interactivePopGestureRecognizer.delegate = self;
但这两行代码必须放在viewWillAppear中,相比上一种方式要修改的代码更多,因此建议使用上一种方式。
响应了iOS7的滑动返回手势之后,我们还会发现一个问题,iOS7的滑动返回不会调用我们给leftBarButtonItem设置的回调,那么返回的事件如何捕捉呢?可以通过以下代码:
[plain]
- (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的滑动返回问题。
- 关于iOS7之后自定义leftnavigationitem后手势无法响应问题的解决办法
- Xcode6.0后IOS7.0之后的手势滑动
- 页面加UIPanGestureRecognizer手势后,无法响应tableViewCell点击事件的解决办法
- 页面加UIPanGestureRecognizer手势后,无法响应tableViewCell点击事件的解决办法
- 自定义返回按钮时,iOS7手势返回遇到的问题
- 自定义返回按钮时,iOS7手势返回遇到的问题
- 自定义navigationController的左侧按钮后返回手势失灵解决办法
- 自定义的ListView无法响应OnItemClickListener问题
- android自定义ListView的Item无法响应OnItemClick的解决办法
- Android自定义ListView的Item无法响应OnItemClick的解决办法
- 关于XTToolkitPro中DialogPanes无法响应OnDockingPaneNotify事件的解决办法
- 关于Qt中webView无法响应mouseEvent的解决办法
- iOS7 NavigationController 手势问题
- iOS7 NavigationController 手势问题
- 关于系统(ios7+)自带的向右滑动手势返回上一个界面的一个问题
- IOS7之后的导航栏遮盖问题
- iOS7之后的导航栏遮盖问题
- ios7之后导航栏的问题1
- Apache+Tomcat集群配置
- C++初学者的足迹10 作业报告9 计算周工资
- 奇异值分解及几何意义
- 黄秋生回应王晶绝交喊话:想不到你有我电话 很感动!】
- 【无限互联】学生作品:大众点评iOS客户端
- 关于iOS7之后自定义leftnavigationitem后手势无法响应问题的解决办法
- C++类的对象和类的指针的区别
- ROR资源列表
- C# 中yield使用
- ios7 ssl证书验证问题
- 实现图片缩放的Gallery
- 加入收藏 兼容性较好的 代码 兼容ie firefox chrome(经过测试 该代码无效)
- Openwrt编译进阶-修改密码、路由连接数、时区及主题
- 【县委书记拉二胡遭吐槽:公园大爷都比他强[衰]】