UINavigationController 侧滑

解决iOS7后系统自带手势侧滑功能受自定义UIBarButtonItem影响问题
本文介绍了解决在iOS7系统中,自定义UIBarButtonItem后导致无法使用系统自带的手势侧滑功能的方法。通过使用UIImage设置背景图片和调整按钮位置,或在pushViewController后调用特定方法来重新配置手势识别,可以解决该问题。推荐使用封装UINavigationController的类方法来简化操作。

iOS7 后系统自带手势侧滑功能

由于自定义leftBarButtonItem 导致 无法侧滑

解决办法

1、(不建议使用)

UIImage *backButtonImage = [[UIImage imageNamed:@"back.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]; 

2、pushViewController后添加方法

[self.navigationController pushViewController:viewController animated:YES];  

//开启iOS7的滑动返回效果  

if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {  

   self.navigationController.interactivePopGestureRecognizer.delegate = nil;  

}  

3.把UINavigationController封装一个类(推荐)

- (void)viewDidLoad {

    [super viewDidLoad];

//    [self setNavigationBarHidden:YES];

    self.delegate = self;

    self.interactivePopGestureRecognizer.delegate = nil;

}


//解决某些情况push会卡死的情况

- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated {

    BOOL isRootVC = viewController == navigationController.viewControllers.firstObject;

    navigationController.interactivePopGestureRecognizer.enabled = !isRootVC;

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值