2012-06-27 94 views
1

我剛剛創建了一個自定義的UIViewController,其中包含一些用戶操作,如觸摸。我想處理parentObject中的用戶交互。換句話說就是創建ViewController的那個。向UIResponder鏈發送事件?

從其他語言我習慣使用推高的事件。所以我的父對象會對它可以作出反應的ViewController對象的引用有某種監聽器。

Objective C處理這種交互類型的方式是什麼?

+0

這是iOS或OSX? :] – nacho4d

+0

對不起... ios5 – mogio

+0

Mac/IOS世界使用委託模式來處理這種類型的交互。你肯定會想看看。 – pdriegen

回答

3

這可以通過1)響應鏈,2)通知和3)代表來完成。

  1. 所有UI對象形成響應鏈,從當前聚焦的元素開始,那麼它的父視圖等,通常直到應用程序對象。通過向您的筆尖中的特殊First Responder對象發送操作,您將把它放到響應者鏈中,直到有人處理它爲止。您可以使用此機制來觸發事件,而無需知道誰和何時處理它們。這與HTML事件模型類似。

  2. 通過NSNotificationCenter發送的通知可以被任意數量的監聽器接收。這是最接近的例如C#事件。

  3. 委託是向單個對象發送事件的最簡單機制。該類聲明名爲delegate的弱屬性,可以爲任何對象和該對象應該實現的協議分配屬性。許多課程使用這種方法;主要問題是你不能有這樣一個以上的監聽器。

+0

謝謝 - 我會看看 – mogio