我很難理解iPhone應用程序中響應器鏈的工作原理。如何恢復以前的firstResponder?
我的情況如下。我有兩個UIViewControllers安裝在標籤欄控制器上。稱它們爲視圖控制器A和B.它們在意義上無關,因爲它們都沒有引用或不瞭解對方。
A和B需要到遠程控制事件(播放/暫停/停止按鈕)作出響應。控制器A一直想要響應這些事件,而B只想在用戶選擇某個功能時對它們做出響應。當我的應用程序啓動時,A立即成爲第一響應者,並能夠接收遙控事件。當B想要接收的事件,它成爲第一個響應,然後開始得到事件,而不是A.
當B使用遙控器完成,會出現問題。此時,B自己調用resignFirstResponder。此後,A和B都不能獲得任何遙控事件。
我以爲,當B辭職第一響應狀態,以前是第一個響應者將被恢復的事情。這不是它的工作原理嗎?
如果不是,我該如何將A還原爲第一響應者?請記住,A和B是單獨的選項卡,因此B沒有對A的引用或者知道A應該是第一個響應者。所以我不想在A上明確地調用becomeFirstResponder。相反,我需要的是一種獲得前一個響應者並恢復它的方式(我認爲)。我有點困惑,爲什麼這不會自動發生。
感謝, 弗蘭克
謝謝,我試了一下,你的解釋是有道理的。視圖B是否成爲第一響應者實際上並不重要。只要我切換到其選項卡,視圖A就停止成爲第一響應者,並停止獲取遠程控制事件。 在我的情況下,常見的超級視圖可能是標籤欄控制器的視圖。我必須繼承UITabBarController來做我想要的嗎? – user332000 2010-07-13 04:50:05
是的 - 子類UITabBarController似乎工作。當沒有其他人在監聽時,該子類獲取遠程控制事件。現在我所要做的就是找出將事件派往正確位置的一種優雅方式。 – user332000 2010-07-13 05:04:41
調用A的「becomeFirstResponder:」方法將第一響應者交給A.IIRC。 – Kalle 2010-07-13 08:08:59