iOS之侧滑返回无需第三方,只需在自己的BaseNavController添加大
闲时多研究研究代码或者多多封装一些常用的类,对自己有利而无害,作为一个程序员,我觉得只要多看,多敲,多琢磨,慢慢滴你也就会成为大牛。
效果图
实现步骤:
1、viewDidLoad需要做的事情
self.delegate = self;
__weak typeof(self) weakSelf = self;
if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
self.interactivePopGestureRecognizer.delegate = weakSelf;
}
2、实现UIGestureRecognizerDelegate代理中的方法
-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{
if (self.navigationController.viewControllers.count == 1) {
return NO;
}else{
return YES;
}
}
3、实现UINavigationControllerDelegate代理中的方法
1.实现didShowViewController方法
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated{
if ([navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
navigationController.interactivePopGestureRecognizer.enabled = YES;
}
//使navigationcontroller中第一个控制器不响应右滑pop手势
if (navigationController.viewControllers.count == 1) {
navigationController.interactivePopGestureRecognizer.enabled = NO;
navigationController.interactivePopGestureRecognizer.delegate = nil;
}
}
2.此方法中拦截所有push 进来的控制器
-(void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated{
if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
self.interactivePopGestureRecognizer.enabled = NO;
}
[super pushViewController:viewController animated:animated];
}
作者:flowerflower
链接:http://www.jianshu.com/p/5e7ac309cff4
- 近 8 万首手写诗词,都藏在这个古风 App 里 - 郢雪 #iOS
- iPhone X/8去升级:iOS 11新更新修复摄像头大Bug
- 两名老人斑马线上被撞飞 肇事车驶离现场又返回
- 河北一男子因信用卡透支潜逃伊朗 近日被警方劝返回国
- 苹果发布iOS 11.2.1更新:修复安全漏洞,要求所有人必须升级!
- 漏洞太要命!iOS 11.2.1更新:必升
- iOS 灵活的 模块化/组件化 工具与规范 Lotusoot 解说
- 喜大普奔!苹果iOS App预订功能全面开放了
- iOS 11.2导致Wi-Fi通话失效?苹果未回应
- iOS11越狱由谷歌团队推出?这个蛋扯的有点大!