iOS開發UI篇—響應者鏈條

來源:互聯網
上載者:User

標籤:style   class   blog   http   color   com   

iOS開發UI篇—響應者鏈條

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

使用者點擊螢幕後產生的一個觸摸事件,經過一些列的傳遞過程後,會找到最合適的視圖控制項來處理這個事件

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

touchesBegan…

touchesMoved…

touchedEnded…

這些touches方法的預設做法是將事件順著響應者鏈條向上傳遞,將事件交給上一個響應者進行處理

 

二、響應過程

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

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

 

 三、重要說明

 1.相關概念

響應者鏈條:由很多響應者連結在一起組合起來的一個鏈條稱之為響應者鏈條

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

 2.處理原則

預設做法是將事件順著響應者鏈條向上傳遞,將事件交給上一個響應者進行處理

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

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

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

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

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

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

{

    [super touchesBegan:touches withEvent:event];

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

}

 

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

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

在視圖階層的最頂級視圖,如果也不能處理收到的事件或訊息,則其將事件或訊息傳遞給window對象進行處理

如果window對象也不處理,則其將事件或訊息傳遞給UIApplication對象

如果UIApplication也不能處理該事件或訊息,則將其丟棄

補充:蘋果官方文檔

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.