zoukankan      html  css  js  c++  java
  • UINavigationController 的一些坑

    坑一:自定义导航栏返回键 iOS7及之后版本 手势边缘右滑返回失效

    解决方案:

    -(void)viewDidLoad{
        
        [super viewDidLoad];
        
        //self 为 UINavigationController 子类
        self.interactivePopGestureRecognizer.delegate=(id)self;
        
    }

    网上千篇一律都是该答案,确实加了这句话可以手势返回了,然而却又埋下了新的坑。

    坑二:在UINavigationController的rootViewController触发手势边缘右滑,然后触发push方法界面卡死,必须重新边缘右滑后方可恢复,如下图所示

    解决方案:

    坑二的问题主要是由坑一埋下的,为何出现坑二的情况并不清楚,有知道的麻烦告知谢谢。

    -(void)viewDidLoad{
        
        [super viewDidLoad];
        
        self.interactivePopGestureRecognizer.delegate=(id)self;
        
        //实现UINavigationControllerDelegate协议
        self.delegate = self;
    }
    
    //push完成 且界面显示完成时 这个是Delegate的方法
     - (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated
    {
        
    if (navigationController.viewControllers.count == 1) {

          //如果是 rootViewController 禁止滑动手势
          self.interactivePopGestureRecognizer.enabled = NO;
        }
    else{
        
          //如果不是 就启用 滑动手势
          self.interactivePopGestureRecognizer.enabled = YES;
        }
    }

    坑三:在视图Push过程中,且Push尚未完成时触发了Pop,可能会导致界面卡死,不响应任何手势,点击事件

    解决方案:重写 push方法 

    - (void) pushViewController:(UIViewController *)viewController animated:(BOOL)animated
    {
        
        self.interactivePopGestureRecognizer.enabled = NO;
        
        [super pushViewController:viewController animated:animated];
    }

    push时禁用了,push完就要开启,否则手势就无效了。开启方法同坑二,实现UINavigationControllerDelegate 方法 

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

    swift demo下载

    oc demo下载

  • 相关阅读:
    考研打卡_Day04
    考研打卡_Day03
    考研打卡-Day02
    吾日三省-归隐
    为什么要写博客?
    用C语言写一个Helloworld_实现第一步编译运行
    C语言中的结构体是怎么定义的_怎么使用?
    C语言的常用的数据类型有哪些_所占字节分别是多少
    Vim编辑器中查找关键词命令_查找与替换命令_多窗口命令
    Vim的基本操作命令与光标移动命令
  • 原文地址:https://www.cnblogs.com/wangqw/p/5656717.html
Copyright © 2011-2022 走看看