你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> 《從零開始學Swift》學習筆記(Day 68)——Cocoa Touch設計模式及應用之響應者鏈與觸摸事件

《從零開始學Swift》學習筆記(Day 68)——Cocoa Touch設計模式及應用之響應者鏈與觸摸事件

編輯:IOS開發綜合

  應用與用戶進行交互,依賴於各種各樣的事件。事件響應者對象是可以響應事件並對其進行處理的對象,響應者鏈是由一系列鏈接在一起的響應者組成的。響應者鏈在事件處理中是非常重要的,響應者鏈可以把用戶事件路由給正確的對象。

  響應者對象與響應鏈

  UIResponder是所有響應者對象的基類,它不僅為事件處理,而且也為常見的響應者行為定義編程接口。UIApplication、UIView(及其子類,包括UIWindow)和UIViewController(及其子類)都直接或間接地繼承自UIResponder類。

  

 

  第一響應者是應用程序中當前負責接收觸摸事件的響應者對象(通常是一個UIView對象)。UIWindow對象以消息的形式將事件發送給第一響應者,使其有機會首先處理事件。如果第一響應者沒有進行處理,系統就將事件(通過消息)傳遞給響應者鏈中的下一個響應者,看看它是否可以進行處理。

  響應者鏈是一系列鏈接在一起的響應者對象,它允許響應者對象將處理事件的責任傳遞給其他更高級別的對象。隨著應用程序尋找能夠處理事件的對象,事件就在響應者鏈中向上傳遞。響應者鏈由一系列“下一個響應者”組成。

  1.第一響應者將事件傳遞給它的視圖控制器(如果有的話),然後是它的父視圖。

  2.類似地,視圖層次中的每個後續視圖都首先傳遞給它的視圖控制器(如果有的話),然後是它的父視圖。

  3.最上層的容器視圖將事件傳遞給UIWindow對象。

  4.UIWindow對象將事件傳遞給UIApplication單例對象。

  觸摸事件

  觸摸(UITouch)對象表示屏幕上的一個觸摸事件,訪問觸摸是通過UIEvent對象傳遞給事件響應者對象的。觸摸對象有時間和空間兩方面。

  1.時間方面

  時間方面信息稱為階段(phase),表示觸摸是否剛剛開始、是否正在移動或處於靜止狀態,以及何時結束,也就是手指何時從屏幕抬起。

  在給定的觸摸階段中,如果發生新的觸摸動作或已有的觸摸動作發生變化,則應用程序就會發送這些消息。

  當一個或多個手指觸碰屏幕時,發送touchesBegan:withEvent:消息。

  當一個或多個手指在屏幕上移動時,發送touchesMoved:withEvent:消息。

  當一個或多個手指離開屏幕時,發送touchesEnded:withEvent:消息。

  

 

  2.空間方面

  觸摸點對象還包括當前在視圖或窗口中的位置信息,以及之前的位置信息(如果有的話)。下面的方法是可以獲得觸摸點所在窗口或視圖中的位置。

  func locationInView(_ view:UIView?) -> CGPoint

  獲得前一個觸摸點所在窗口或視圖中的位置信息:

  func previousLocationInView(_view: UIView?) -> CGPoint

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved