zoukankan      html  css  js  c++  java
  • (导航控制器view)全屏幕滑动实现pop效果

      看到现在app 中越来越流行的手势滑动实现pop效果,心里很是痒痒跃跃欲试,经过多方查看资料,终于在简书上找到了详细的实现方案: 

    轻松学习之二——iOS利用Runtime自定义控制器POP手势动画

    经过修改实现了简单的(自定义导航控制器)手势滑动实现pop返回效果:

    1.先打印了导航控制器的interactivePopGestureRecognizer,log结果如下:

    <UIScreenEdgePanGestureRecognizer: 0x7fe5f1579ce0; state = Possible; delaysTouchesBegan = YES; view = <UILayoutContainerView 0x7fe5f1567ea0>; target= <(action=handleNavigationTransition:, target=<_UINavigationInteractiveTransition

    2.自定义UIPanGestureRecognizer,移花接木到该手势的target和action;action好处理,但是target的活得用runtime时可以拿到,但过程略复杂,

    打印interactivePopGestureRecognizer.delegate;发现正好也是_UINavigationInteractiveTransition,所以问题解决:

        id target = self.interactivePopGestureRecognizer.delegate;

        UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:target    action:NSSelectorFromString(@"handleNavigationTransition:")];

    3.测试发现如果当前导航控制器的自控制器只有一个的时候,拖拽手势会发生bug,这时就需要腹泻pan手势的

    -(BOOL)gestureRecognizerShouldBegin:来决定手势操作是否起作用:

    -(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer

    {

        return self.childViewControllers.count==1?NO :YES;

    }

     4.附上github上forkingdog的更加完美的分类实现方法:

    https://github.com/forkingdog/UITableView-FDTemplateLayoutCell

    TIP:相关bug小提示,如果自定了导航控制器的自控制器的leftBarButtonItem,可能会引发边缘滑动pop效果的失灵,是由于

      self.interactivePopGestureRecognizer.delegate被滞空的原因

  • 相关阅读:
    复利完结观看评价
    汉堡计划
    0406 复利计算完结篇
    构建之法 第四章 读后感
    复利计算单元测试
    实验一 cmd命令的编写
    构建之法 前三章读后感
    复利计算完成总结
    复利计算软件v3
    实验 0 了解和熟悉操作系统
  • 原文地址:https://www.cnblogs.com/shuizhuqing/p/4726010.html
Copyright © 2011-2022 走看看