2016-07-23 22 views

回答

1

Event Handling Guide for iOS

如果初始對象或者命中測試視圖或第一響應者-doesn't處理一個事件,UIKit中傳遞事件到鏈中的下一響應。 每個響應者通過調用nextResponder方法來決定是否要處理該事件或將其傳遞給其自己的下一個響應者。這個過程一直持續到響應者對象處理事件或沒有更多響應者。

什麼「處理」事件意味着真正取決於每個響應者類。您在實施響應者時需要做出的決定,對於每個事件,您是否將它傳遞給下一個響應者。

還有那個部分底部的重要注意事項:

重要:如果您實現一個自定義視圖來處理遠程控制的事件,行動的消息,搖運動與UIKit中,或編輯事件 - 菜單消息,不要直接將事件或消息轉發給nextResponder,將其發送給響應者鏈。相反,調用當前事件處理方法的超類實現,並讓UIKit爲你處理響應者鏈的遍歷。

同樣因爲你的應答是UIView子與觸摸事件的工作中最常見的情況下,所有的這些方法包括:

此方法的默認實現不執行任何操作。然而,UIResponder的立即UIKit子類,特別是UIView,將消息轉發給響應者鏈。要將消息轉發給下一個響應者,請將消息發送給super(超類實現);不要直接將消息發送給下一個響應者。例如,

[super touchesBegan:touches withEvent:event];

如果你沒有覆蓋超調用這個方法(一種常見的使用模式),您還必須重寫處理觸摸事件,如果僅僅作爲存根(空)實現的其他方法。

+0

那麼,爲什麼一個響應者無法處理它,所以在這種情況下,我將它傳遞給下一個?我想它根據事件的類型而不同,但我需要一個例子。謝謝 – Badr

+0

考慮一個遊戲板。遊戲板上的單個作品可能會對觸摸事件做出反應,以便它可以響應輕擊手勢,但您可能需要使用輕掃或拖動手勢作爲棋盤,以便管理棋子之間的交互。 – Jonah

+0

沒問題,所以如果他希望這個響應者或其他人來處理這個事件,那麼這是根據編碼者的目的? – Badr

相關問題