Sometimes MBProgressHUD不能顯示

來源:互聯網
上載者:User

MBProgressHUD 顯示到view上有一定的局限性,

顯示到Window 上有時候又 不能顯示出來,

對於這麼優秀的一個控制項,如果不能使用正確,使用好,確實有點可惜。

之前一直使用MBProgressHUD顯示loading,saving之類的資訊,一直都沒有什麼問題,突然有一天發現這個問題。發現我的MBProgressHUD(以下簡稱HUD)彈不出來了,但不是每次都彈不出來,這種問題最不容易處理,不知道為何不出來,看代碼邏輯也沒有問題。

我是將HUD加到window上的,就是下面這個window!

    UIWindow *keywindow = [[UIApplication
sharedApplication] keyWindow];

漸漸地發現一些規律,每次HUD不能彈出來,前面都是因為出現過AlertView,難道AlertView彈出來的時候會new一個新的window?
UIWindow
*keyWindow
=
[[[UIApplication
sharedApplication]
delegate]
window];(支援5.0以後)

通過查閱資料,得知:

UIAlertView出現時會重新初始化一個UIWindow並設定為keyWindow,這時當使用[[UIApplication shareApplication] keyWindow] 時擷取到的就不是你本意想拿到的應用程式的UIWindow。

 [[UIApplication sharedApplication] keyWindow] returning nil

這時你有兩種解決辦法:

第一種:initWithView:

 [[MBProgressHUD alloc] initWithView:view];

第二種,也是我想要的方式:找到那個window!

好了,到這裡,HUD彈不出來的問題解決了。

=============我是分割線===========================




但是,還有一個問題,IOS到底提供了幾層Window?

之前只知道:通常,在一個程式中只會有一個UIWindow.通過翻網站,查資料,找到下面這個部落格,關於window level 部分講的很明白。

我就不再贅述了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.