2011-04-23 37 views
2

在模態表示的控制器的viewDidDisappear:中,我添加了一個回調函數來通知誰有興趣關於視圖消失(動畫完成後)而不需要子類化。 其中一個註冊回調的控制器正在啓動UIAlertView。但是,一旦顯示警報,其按鈕不會作出反應。 另一個是將子視圖添加到自身,並再次:視圖的按鈕不反應。 按鈕的resposible處理程序不會被觸發。 我認爲這與viewDidDisappear:在呼叫回撥時尚未完成。但即使我使用了子類化,情況也是如此。 有一種解釋可能是由於點擊沒有經過,還有一些其他視圖覆蓋了我的按鈕。在viewDidDisappear中顯示UIAlertView:按鈕沒有反應?

所以:有人可以證實,做我所做的事情並不是一個好主意(顯示警報,在viewDidDisappear中添加子視圖),因爲那樣我將不得不改變流程。如果它應該沒問題,我必須弄清楚還有什麼會造成這種影響。

回答

0

我會把回調放到viewWillDisappear:來代替。至少原來的UIView引用還在。

+0

問題是:如果您關閉一個模式的動畫,vieWillAppear之前被調用viewWillAppear,只有在動畫結束後纔會被調用。所以我不能等到另一個觀點消失,因爲我甚至都沒有抓住這個事件。 – Krumelur 2011-04-23 17:15:51

0

更好的解決方案是通過添加調用者作爲委託來消除通過父控制器的模態視圖。代表將執行一個協議來解除模態控制器。當你準備解僱時,從模態視圖調用委託協議。

0

爲了避免更改流程,你可以安排一個計時器,以示警戒,這將提供一個機會給視圖控制器代碼來完成

+0

但是應該多久?聽起來像是一個混亂,但將工作:-) – Krumelur 2011-04-24 19:54:11