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被滞空的原因

  • 相关阅读:
    什么是Servlet容器?
    JAVA
    BIO与NIO、AIO的区别(这个容易理解)
    深入分析JAVA IO(BIO、NIO、AIO)
    Undertow
    Consul CAP理论纠错
    JAVA BIO与NIO、AIO的区别
    Java-线程池专题(什么是线程池,如何使用,为什么要用)
    java中的重量级与轻量级概念
    Postman 把response的值自动放到变量里
  • 原文地址:https://www.cnblogs.com/shuizhuqing/p/4726010.html
Copyright © 2011-2022 走看看