解决自定义返回按钮后返回手势失效的问题

  1. 自定义UINavigationController。
@interface JKNavigationController () <UINavigationControllerDelegate, UIGestureRecognizerDelegate>
  1. 重构viewDidLoad方法。
  - (void)viewDidLoad { 
        [super viewDidLoad];  
        // 为self创建弱引用对象 
        __weak typeof (self) weakSelf = self; 
        if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
            self.interactivePopGestureRecognizer.delegate = weakSelf;
            self.delegate = weakSelf; 
        }
  }
  1. 重构pushViewController方法。
  - (void)pushViewController:(UIViewController *)viewController 
                     animated:(BOOL)animated { 
        if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)]) { 
            self.interactivePopGestureRecognizer.enabled = NO; 
        }  
        [super pushViewController:viewController animated:animated];
}
  1. 实现UINavigationControllerDelegate的方法。
  - (void)navigationController:(UINavigationController *)navigationController 
          didShowViewController:(UIViewController *)viewController 
                       animated:(BOOL)animated { 
        if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
            self.interactivePopGestureRecognizer.enabled = YES; 
        }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容