侧滑返回

在自己的navigationcontroller的viewdidload 里面写下如下代码

self.delegate = self;


    __weak typeof(self) weakSelf = self;


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


        self.interactivePopGestureRecognizer.delegate = weakSelf;

    }

实现UIGestureRecognizerDelegate代理方法

-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{

    if(self.navigationController.viewControllers.count == 1) {

        returnNO;

    }else{

        returnYES;

    }

}

实现UINavigationControllerDelegate代理中的方法

- (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;

    }

}



-(void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated{

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

        self.interactivePopGestureRecognizer.enabled = NO;

    }

    [superpushViewController:viewController animated:animated];

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容