2010-10-22 58 views
4

在iPhone上,我們可以簡單地使用(void) viewDidAppear:(BOOL)animated;在視圖成爲焦點時執行操作。在某些事件中,我們有一個模態視圖,在其上有另一個模態視圖,在iPhone上,關閉最頂端的模式視圖將激發viewDidAppear以獲取較低模態視圖。如何判斷UIView何時獲得焦點

這不是iPad的情況,因爲視圖保持「可見」,即使它位於另一個模態視圖的後面。有什麼方法可以從視圖本身變成活動視圖時從UIViewController中知道嗎?

回答

4

能當模態視圖控制器的視野中消失不只是用? 當模態視圖的控制器收到viewWill/DidDissapear時,您知道原始視圖再次可見。

編輯: 在ViewController中添加此模態的viewDidDissapear:

[self.parentViewController viewDidAppear:animated]; 

這將使被稱爲viewDidAppear方法,因爲它是在iPhone上。

你並不需要設置self.parentViewController所有的,因爲它是在presentModalViewController方法爲你做了(一個您的使用,以顯示模式視圖控制器)

+0

問題是我們必須在兩個模態視圖之間設置一個鏈接,並告訴其他人在理想情況下讓第一個模態視圖在任何時候變爲活動狀態時執行動作時告訴其他人執行動作。 – mjdth 2010-10-22 19:32:11

+0

在模態表示的視圖控制器上,覆蓋ViewDidDissapear:動畫方法並放入'[self.parentViewController viewDidAppear:animated];'。當第二個模式視圖控制器消失並因此出現第一個視圖控制器時,這將有效地表示第一個視圖控制器的ViewDidAppear被消息/調用。所以你只需要把你想要的第一個視圖控制器在ViewDidAppear中變得活躍的所有動作,就像你在iphone上的常規一樣。 – 2010-10-22 20:10:38

+0

這聽起來像它會工作。我們採取了一種稍微不同的方法,但如果我們想到它,我可能會這樣做。 – mjdth 2010-11-04 22:12:19

1

嘗試檢查[theUIView isFirstResponder] 值應該是真正的具有鍵盤的焦點視圖等

+0

聽起來像一個可能性,但這種ISN這不是一個真正的事件。我們希望迴應變得活躍的觀點,而不是經常檢查它是否有效。 – mjdth 2010-10-22 19:39:02