1. 程式人生 > >ios7 push pop 動畫突然消失的解決方案

ios7 push pop 動畫突然消失的解決方案

轉載自:  http://2goo.info/weblog/detail/237512

這幾天開發的程式遇到了這樣的問題。

突然之前在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];

萬事大吉,回家找媳婦去。。

哈哈哈哈