iOS 自定义滑动返回和解决连续多次push,pop引起的crash问题

UINavigationController的滑动返回作为iOS7的新特性被引入,但是只有在滑动视图的左边缘的时,才可以体验这样的交互。如果,想要滑动视图的任意位置,想要体验这样的交互,就需要自己动手处理了,后者使用第三方库。     另外,最近的程序中遇到这样的一个问题:push到一个钱包界面,这个界面请求钱包的内容。这个界面比较敏感,涉及钱财,采取了一些安全措施。其中的一个就是客户端距离上
摘要由CSDN通过智能技术生成

      UINavigationController的滑动返回作为iOS7的新特性被引入,但是只有在滑动视图的左边缘的时,才可以体验这样的交互。如果,想要滑动视图的任意位置,想要体验这样的交互,就需要自己动手处理了,后者使用第三方库。

     另外,最近的程序中遇到这样的一个问题:push到一个钱包界面,这个界面请求钱包的内容。这个界面比较敏感,涉及钱财,采取了一些安全措施。其中的一个就是客户端距离上次请求验证的接口超过有效时间,就会要求用户再次登陆。那么对于这里,就是在进入钱包界面的时候,请求数据,服务器端如果认为登陆状态失效了,就需要引导用户再次登陆。如果用户不愿意登陆,点击返回到钱包界面,因为用户没有再次登陆,为了安全起见,需要立刻跳转到钱包的前一个界面。如此来回快速的push和pop很容易引起crash,(如can't add self as subview等问题)。

    关于这个滑动返回还要涉及的一个问题就是navigationbar的颜色更改和隐藏与否。如果不能很好处理navigationbar的颜色更改,就有可能出现navigationbar的颜色是现在的颜色和下一个颜色的过渡色;当前界面不隐藏navigationbar,下一个界面隐藏,如果不能很好处理,就有可能出现下个界面因为要处理navigationbar而引起界面的跳动。

     观察了一些已有的app的,有些处理的很好,于是,就想尝试自己写一个。

                                                                               

     两个navigationbar的颜色不同,滑动返回也不会                     滑动返回中,上一个navigationbar上的文本与

    导致两个navigationbar串色。                                                     当前的重叠。

 

      1.分析滑动返回:

        滑动是一个手势。滑动返回是利用手势来控制当前视图的移动,另外,上一个界面也会因为当前界面右移而右移显示出来。这里需要用到截屏,也就是说上一个界面其实是截取的一个“图片”。

      2.分析连续的pop和push:

       连续的pop和push之所以会引起问题,是因为动画需要时间,在动画没有结束之前,来回返回push和pop就会引起异常,解决的方式是在一个UIViewController或者其子类的viewDidAppear方法里面进行push和pop操作,也就是说要视图完全呈现出来,动画完全结束后,再进行操作。

     解决方法:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值