2011-01-10 25 views
16

我讀了關於響應者鏈,基本上我讀了關於如何將來自UI的事件傳遞給響應者鏈,如何處理它們以及如何傳遞。我還使用了-becomeFirstResponder和-resignFirstResponder,但是我只將它們用於基本任務,如在iOS上顯示鍵盤和處理搖動事件。如何在xib文件中使用「First Responder」?

我想知道的是如何在Xcode生成的MainWindow.xib中使用「First Responder」代理對象。我看到一些收到的操作,並且我看到我可以在「標識」檢查器選項卡上創建操作。

所以我的問題是:我該如何使用這些動作,而什麼時候應該在IB中使用這個代理對象?

Interface Builder Screenshot

在此先感謝。

+0

其實這是什麼代理對象?一個按鈕?什麼? – 2012-11-13 03:35:22

回答

3

無論何時您希望將動作發送給第一個響應者,無論發生動作時發生哪個特定對象,您都會使用First Responder作爲動作的目標。

在桌面Cocoa中,針對First Responder的消息實際上是一個nil定向動作 - 沒有任何目標被隱式理解爲第一個可能的響應者,即第一響應者。

通常,文本操作指向第一響應者。您希望將按鍵發送到哪個文本字段具有焦點,但具有焦點的文本字段會在視圖和應用程序的生命週期中發生變化。您可以在每次文本字段獲得焦點時手動重新定位動作,但是要感謝NSResponder,您不必擔心 - 這一切都爲您照顧。

+1

謝謝你的回答傑里米。在iPhone上似乎沒有這個功能的大用途(或者至少目前我看不到任何用途)... – Moszi 2011-01-11 11:53:24

+0

你是什麼意思反對「碰巧是」?對象恰好在動作發送時。動作發送時有很多對象。哪一個? – 2012-11-13 03:36:17

7

將動作分配給第一個響應者對象與以編程方式向帶有nil目標的控件添加動作相同。當動作被觸發時,應用程序將通過響應者鏈並將動作發送給接受它的第一響應者。在Mac上,它通常用於自動將菜單命令發送到當前窗口或文檔。如果您有多個要用同一個按鈕發送消息的對象,則應該使用它。

相關問題