美文网首页
iOS学习笔记-OC-(1)自定义返回手势

iOS学习笔记-OC-(1)自定义返回手势

作者: 晨土飞扬 | 来源:发表于2017-10-11 22:37 被阅读0次

学习目的:
*解决重写navigationItem.leftBarButtonItem导致系统自动右滑返回手势失效.

实现效果:
在push后的控制器中,通过右滑手势返回上一个控制器,不仅仅在屏幕边缘能实现返回(在屏幕中间右滑也能返回).

1.在自定义的导航控制器viewDidLoad方法中实现:

- (void)viewDidLoad {

[super viewDidLoad];

UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self.interactivePopGestureRecognizer.delegate action:@selector(handleNavigationTransition:)];

[self.view addGestureRecognizer:pan];

// 控制手势什么时候触发,只有非根控制器才需要触发手势

pan.delegate = self;

// 禁止之前手势

self.interactivePopGestureRecognizer.enabled = NO;

}

2.解决返回到根控制器界面,再继续右滑导致卡死的Bug:
2.1.遵守UIGestureRecognizerDelegate协议

@interface FitfunNavigationController ()<UIGestureRecognizerDelegate>

2.2.实现代理协议方法

#pragma mark - UIGestureRecognizerDelegate
// 决定是否触发手势
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    return self.childViewControllers.count > 1;
}

3.重写UINavigationController的方法(- pushViewController: animated:):

- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    if (self.childViewControllers.count > 0) { // 非根控制器
        viewController.hidesBottomBarWhenPushed = YES;
     
        // 设置返回按钮,只有非根控制器
        viewController.navigationItem.leftBarButtonItem = [UIBarButtonItem fitfun_backItemWithimage:[UIImage imageNamed:@"navigationButtonReturn"] highImage:[UIImage imageNamed:@"navigationButtonReturnClick"]  target:self action:@selector(back) title:@"返回"];
    }
    
    // 真正在跳转
    [super pushViewController:viewController animated:animated];
}

- (void)back
{
    [self popViewControllerAnimated:YES];
}

相关文章

  • iOS学习笔记-OC-(1)自定义返回手势

    学习目的:*解决重写navigationItem.leftBarButtonItem导致系统自动右滑返回手势失效....

  • iOS 返回按钮样式设置及相关问题

    1.自定义返回按钮的同时, 保持iOS原生滑动返回手势(interactivePopGestureRecogniz...

  • iOS 手势返回

    iOS 手势返回 BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势主流App...

  • iOS笔记之_侧滑返回

    方法一: iOS 侧滑返回功能,自定义手势触发系统的pop动画。handleNavigationTransitio...

  • iOS 全屏返回

    iOS 全屏返回 BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势主流App...

  • UINavigationController

    隐藏NavigationBar时的一个坑(很实用)自定义iOS7导航栏背景,标题和返回按钮文字颜色iOS手势返回的...

  • iOS 右滑返回

    iOS 右滑返回 BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势主流App...

  • iOS 侧滑返回

    iOS 侧滑返回 BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势主流App...

  • iOS 侧滑返回详解

    iOS 侧滑返回详解 BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势主流A...

  • iOS 侧滑返回详解

    iOS 侧滑返回 BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势主流App...

网友评论

      本文标题:iOS学习笔记-OC-(1)自定义返回手势

      本文链接:https://www.haomeiwen.com/subject/kppgyxtx.html