美文网首页轩轩ios学习iOS Developer
导航控制器左滑返回(上)

导航控制器左滑返回(上)

作者: 咬鹃 | 来源:发表于2016-03-09 00:38 被阅读187次
  • 当我们自定义了导航栏的返回按钮的时候由于我们自定义的按钮覆盖了原有的按钮。会导致我们的左滑返回功能丧失,我们有一种方法可以解决这个问题.就是把导航控制器的手势代理清空。就会还原滑动返回功能,代码如下

- (void)viewDidLoad
{
 // 清空滑动返回手势代理
 self.interactivePopGestureRecognizer.delegate = nil;

}
左滑.gif
  • 但是,假如你真的这么做了,也只是解了燃煤之急而已,更大的bug出现了。当你滑动返回到根控制器再根控制器左侧滑动返回的时候程序,你再点击push按钮跳转的时候会直接挂掉。(push按钮直接灰,界面无响应)如图:
右上角push按钮.png
  • 出现这个bug的原因是当我们清空完手势代理的时候,当我们push控制器的时候我们的内部代理可能需要做一些事情,然后这个时候代理我们已经被清空,自然而然就崩了。于是就有了这种解决思路,我们可以让代理监听控制器的push完成,假如push完成之后的控制器是根控制器我们就让他的手势代理完成,具体实现代码如下

@interface ZSNavigationController ()<UINavigationControllerDelegate>

/** 记录手势代理 */
@property(nonatomic,strong)id gestureDelegate;

-(void)viewDidLoad
{
    self.delegate = self;

    // 保存手势代理
    self.gestureDelegate = self.interactivePopGestureRecognizer.delegate;

}

-(void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{

    // push完成时在非根控制器下清空代理,根控制器下还原
    self.interactivePopGestureRecognizer.delegate = viewController == self.childViewControllers[0] ? _gestureDelegate : 0;

}
@end
  • 基本上的功能已经实现了,可是自带的这个左滑的范围非常小,如果我们想要手势响应范围更大的话需要自己手动创建一个新的手势,具体怎么实现呢?请看下部分

相关文章

  • 导航控制器的左滑返回

    2016年7月30日 导航控制器的左滑返回 默认状态下,系统提供了导航控制器的左滑返回的功能。系统功能的前提是: ...

  • 导航控制器左滑返回(上)

    当我们自定义了导航栏的返回按钮的时候由于我们自定义的按钮覆盖了原有的按钮。会导致我们的左滑返回功能丧失,我们有一种...

  • 导航控制器左滑返回(下)

    上一部分我们只是解决了在自定义了左侧返回按钮的时候覆盖了原有按钮导致左滑返回功能丢失的解决办法,有时候我们觉得自带...

  • iOS --导航控制器右滑返回手势 与 全屏滑动 效果

    右滑返回手势 效果 实现:需要自定义导航控制器,JPNavigationController 思路分析: 右滑返回...

  • swift 导航栏左滑返回

    取消系统自带导航栏左滑返回功能: 导航栏的属性:self.interactivePopGestureRecogni...

  • iOS Swift 界面UI相关

    控制器相关 导航栏 导航栏跟随右滑手势返回 导航栏设置中间View present时设置全屏 TabbarCont...

  • iOS 右滑返回

    当自定义导航控制器返回按钮的时候右滑返回的功能就会失效,要想再实现这个功能,可以给导航控制器添加下面这句代码

  • iOS开发遇过的问题

    一、自定义导航栏返回按钮 自定义导航栏按钮后,右滑返回上一层控制器效果消失,通过设置返回手势代理可以解决这一问...

  • 杂⑦碎八之--导航控制器滑动返回功能

    ios7之后,导航控制器自带滑动返回功能,且是边缘侧滑返回功能. 使用UINavigationController...

  • iOS开发: 导航控制器 - 全屏右滑pop返回效果

    iOS开发中, 导航控制器的pop返回可以通过点击 返回按钮 和 左侧边缘右滑 实现 我们还可以自定义导航控制...

网友评论

    本文标题:导航控制器左滑返回(上)

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