首页 > 代码库 > ios7 push pop 动画突然消失的解决方案

ios7 push pop 动画突然消失的解决方案

不想看扯淡的同学,直接拉倒底部查看。。。。。。。。。。

 

 

这几天开发的程序遇到了这样的问题。

突然之前在ios7运行的程序全无动画效果。

系统自带的push pop之类的也完全没有动画效果,就好像view直接add上去的一样。

蛋疼。。。。

查看了下代码。。

完全不知道该如何下手了。

怎么办。。

百度 谷歌。。。

关键字:ios7 动画效果消失

出现如下界面。。。

 

这他妈是什么啊。。。

换谷歌。。

谷歌还是比百度靠谱,但是点进去发现。这也只是跟我一样出现了这些现象提出来的问题,但是解决方案呢,where,你在哪里?

 

难道是我的关键字不对。。

继续换关键字。。。:ios7 pushviewcontroller 动画消失

一一查看,咦,发现了一个有用的东西。

发现有人说模态下有可能出现这个问题。说有可能把keywindow的rootviewcontroller变为空。。

巧代码求证。。

发现确实有问题。。当弹出alert时间,有可能把keywindow变为空。

如何解决。。。

继续搜索。。。

又找到:地址:http://blog.woodbunny.com/post-126.html

一般来说 [UIApplication sharedApplication].keyWindow.rootViewController 会在 appDelegate 中初始化,并且整个应用运行过程中都不会变。

 

所以在很多地方需要用 presentModelViewController 方法时,用这个 rootViewController 是很方便的,因为它相当于一个全局变量,无需再申请、释放。

 

但是本人在使用过程中发现有 rootViewController 被改为 nil 的情况。

 

分析后发现,当 UIAlertView 调用 show 方法后,rootViewController 会被改为 nil,当它 dismiss 后又改回去。而我需要用户在点击 alertview 上的按钮后再做 presentModelViewController 的操作。

 

解决方法:

不要使用 alertview delegate 中的 

- (void)alertView:clickedButtonAtIndex:

方法

 

而要用:

- (void)alertView:diddismissWithButtonAtIndex:

方法!

 

按照这个大牛的方法去更改。

血泪啊。。。改改改

改完后,心情舒畅,应该没有问题了吧。

好,运行app。

弹框。。正常。

哈哈哈

好了。。。

but,多点击几次以后,又出现了这个情况。靠。。

继续找原因。

以为还是这个keywindow出了问题。一直早这个方向寻找原因。。

2天过去了。除了知道监测keywindow变化的知识外,一无所获。。。

就在要放弃的时候,想到了用谷歌 english 去谷歌问题。。。

 

我草啊

我草啊

 

啥也不说了  上图:

 

 

点击进去:

 

一句话,尼玛啊。就这一句话。。。。

 

 

心情激动,按照这个去修改。

运行app,正常。

激动,忐忑,继续测试。

正常,激动

继续测试。

正常。

我草,这一刻的心情爽爆了。

在下班时间依然在公司写下了以上文字。。。

 

 

后续整理。。。。。。。

 

 

 

先总结下出现这些问题的原因

:个人理解,如有错误欢迎指正。

就是在一个动画还没有完全结束的时间,你把它的父视图移除了。

 

解决:大量的修改代码是不现实的,只能下次新开工程的时间去注意这些问题。最简单的方法。进入这个页面时间调用这行代码

[UIView setAnimationsEnabled:YES];

 

万事大吉,回家找媳妇去。。

哈哈哈哈

 

ios7 push pop 动画突然消失的解决方案