iOS-侧滑溜冰问题修复

项目中用到了JXCategoryView并且需要侧滑手势,在VC中用到了self.interactivePopGestureRecognizer.delegate = self;唤起手势,但是出现溜冰bug[侧滑之后 松手自动划过去]
解决方案是:
在TPNavigationController的push方法中,增加判断即可
if([self respondsToSelector:@selector(interactivePopGestureRecognizer)]){
self.interactivePopGestureRecognizer.enabled = YES;
self.interactivePopGestureRecognizer.delegate = nil;
}
完整为:

- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated {
    if (self.childViewControllers.count >0) {
        viewController.hidesBottomBarWhenPushed = YES;
    }
    if([self respondsToSelector:@selector(interactivePopGestureRecognizer)]){
        self.interactivePopGestureRecognizer.enabled = YES;
        self.interactivePopGestureRecognizer.delegate = nil;
    }
    [super pushViewController:viewController animated:animated];
}

补充内容:
自定义的导航栏如果不相应侧滑手势,严谨做法为:
在viewDidAppear中添加代理,在viewWillDisappear中将代理置为nil,负责就会出现连续返回或者侧滑溜冰等混乱场景

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    // 侧滑手势代理设置
    if([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
        self.navigationController.interactivePopGestureRecognizer.delegate = self;
    }
}

- (void)viewWillDisappear:(BOOL)animated {
   [super viewWillDisappear:animated];
    // 侧滑手势代理关闭【否则不置为nil会出现连环返回】
    if([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
        self.navigationController.interactivePopGestureRecognizer.delegate = nil;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容