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];
萬事大吉,回家找媳婦去。。
哈哈哈哈