響應者鏈條

下面讓咱們看看響應者鏈條事件吧。對象

1、 觸摸事件處理的詳細過程

用戶點擊屏幕後產生的一個觸摸事件,通過一些列的傳遞過程後,會找到最合適的視圖控件來處理這個事件繼承

找到最合適的視圖控件後,就會調用控件的touches方法來做具體的事件處理遞歸

touchesBegan…事件

touchesMoved…it

touchedEnded…io

這些touches方法的默認作法是將事件順着響應者鏈條向上傳遞,將事件交給上一個響應者進行處理event

 

2、響應過程class

 一次完整的觸摸事件的傳遞響應的過程方法

 UIAppliction --> UIWiondw -->遞歸找到最適合處理事件的控件-->控件調用touches方法-->判斷是否實現touches方法-->沒有實現默認會將事件傳遞給上一個響應者-->找到上一個響應者touch

 

 3、重要說明

 1.相關概念

響應者鏈條:由不少響應者連接在一塊兒組合起來的一個鏈條稱之爲響應者鏈條

響應者:繼承UIResponder的對象稱之爲響應者對象

 2.處理原則

默認作法是將事件順着響應者鏈條向上傳遞,將事件交給上一個響應者進行處理

 如何判斷當前響應者的上一個響應者是誰?

 (1)判斷當前是不是控制器的View, 若是是控制器的View上一個響應者就是控制器

 (2)若是當前不是控制器的View,上一個響應者就是父控件

 

 3.響應者鏈條有什麼用?

 能夠讓一個觸摸事件發生的時候讓多個響應者同時響應該事件

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

{

    [super touchesBegan:touches withEvent:event];

    NSLog(@"%@" , self.class);

}

 

4、響應者鏈的事件傳遞過程

若是view的控制器存在,就傳遞給控制器;若是控制器不存在,則將其傳遞給它的父視圖

在視圖層次結構的最頂級視圖,若是也不能處理收到的事件或消息,則其將事件或消息傳遞給window對象進行處理

若是window對象也不處理,則其將事件或消息傳遞給UIApplication對象

若是UIApplication也不能處理該事件或消息,則將其丟棄

相關文章
相關標籤/搜索