您的位置:首页 > 移动开发 > IOS开发

iOS自定义返回按钮,保留系统侧滑返回手势

2018-01-19 21:29 666 查看
@interface ViewController ()   

@end@implementation ViewController  

- (void)viewDidLoad {  

        [super viewDidLoad];        // 自定义返回按钮  

        UIButton *button = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, 44, 44)];  

        self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithCustomView:button];  

}  

  

- (void)back:(UIButton *)button {  

        [self.navigationController popViewControllerAnimated:YES];  

}  

  

- (void)viewWillAppear:(BOOL)animated {  

    [super viewWillAppear:animated];    

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

  // 记录系统返回手势的代理  

        _delegate = self.navigationController.interactivePopGestureRecognizer.delegate;          

  // 设置系统返回手势的代理为当前控制器  

        self.navigationController.interactivePopGestureRecognizer.delegate = self;  

    }  

}  

  

- (void)viewWillDisappear:(BOOL)animated {  

    [super viewWillDisappear:animated];     

 // 设置系统返回手势的代理为我们刚进入控制器的时候记录的系统的返回手势代理  

    self.navigationController.interactivePopGestureRecognizer.delegate = _delegate;  

}

#pragma mark - UIGestureRecognizerDelegate

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

 return self.navigationController.childViewControllers.count > 1;  

}  

  

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {    

return self.navigationController.viewControllers.count > 1;  

}

@end  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息