iOS7自带侧滑返回功能,但是自定义返回按钮之后,侧滑返回功能会失效,解决办法如下:
自定义一个UINavigationController,实现几个代理方法
@interface CustomNavigationController : UINavigationController @end
#import "CustomNavigationController.h" @interface CustomNavigationController ()<UINavigationControllerDelegate, UIGestureRecognizerDelegate> @property(nonatomic, weak) UIViewController *currentShowVC; @end @implementation CustomNavigationController - (instancetype)initWithRootViewController:(UIViewController *)rootViewController { CustomNavigationController *nav = [super initWithRootViewController:rootViewController]; nav.interactivePopGestureRecognizer.delegate = self; nav.delegate = self; return nav; } - (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated { if (1 == navigationController.viewControllers.count) { self.currentShowVC = nil; } else { self.currentShowVC = viewController; } } - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer { if (gestureRecognizer == self.interactivePopGestureRecognizer) { return (self.currentShowVC == self.topViewController); } return YES; } - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { if ([gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]] && [otherGestureRecognizer isKindOfClass:[UIScreenEdgePanGestureRecognizer class]]) { return YES; } else { return NO; } } @end
然后,将你的UINavigationController都替换成该自定的NavigationController就OK了
时间: 2024-10-04 07:09:53