標籤:
一.事件的基本概念
1.事件是當使用者手指觸擊螢幕及在螢幕上移動時,系統不斷髮送給應用程式的對象
2.系統將事件按照特定的路徑傳遞給可以對其進行處理的對象
3.在iOS中,一個UITouch對象表示一個觸摸,一個UIEvent對象表示一個事件。事件對象中包含與當前多點觸摸序列相對應的所有對象,還可以提供與特定視圖或視窗相關聯的觸摸對象
二.觸摸的基本概念
1.觸摸資訊有時間和空間兩方面,時間方面的資訊稱為階段(phrase),表示觸摸是否剛剛開始,是否正在移動或處於靜止狀態,以及何時結束----也就是手指何時從螢幕抬起。
2.觸摸資訊還包括當前在視圖或視窗中的位置資訊,以及之前的位置資訊(如果有的話)。當一個手指接觸螢幕時,觸摸就和某個視窗或視圖關聯在一起,這個關聯在事件的整個生命週期都會得到維護。
1.當一個或多個手指觸碰螢幕時,發送[touchesBegan : withEvent :]訊息
2.當一個或多個手指在螢幕上移動時,發送[touchesMoved : withEvent :]訊息
3.當有一個或多個手指離開螢幕時,發送[touchesEnded : withEvent]訊息
三.響應者鏈
1.響應者鏈是一個響應者對象的串連序列,事件或動作訊息(或菜單編輯訊息)一次傳遞。它允許響應者對象把事件處理的職責轉交給其它更高層的對象。應用程式通過向上傳遞一個事件來尋找合適的處理對象。因為點擊檢測視圖也是一個響應者對象,應用程式在處理觸摸事件時也可以利用響應者鏈。
2.由多個響應者對象組成的鏈。
3.iOS中所有能響應事件(觸摸,晃動,遠程事件)的對象都是響應者。
4.系統定義了一個抽象的父類UIResponder來表示響應者。其子類都是響應者。
檢測順序:
UIApplication ->UIWindow -> rootViewController ->viewA ->viewB
viewC ->viewD ->viewE(檢測到觸摸視圖)
響應順序:
和檢測順序正好相反
1.檢測到響應者後,實現touchesBegan:withEvent :等方法,即處理事件
2.如果響應者沒有處理事件,事件會向下傳遞。如果沒有響應者處理,則丟棄觸摸事件
3.事件處理的順序與觸摸檢測查詢相反
4.觸摸的子視圖->view ->viewController ->window ->UIApplication
響應者鏈處理原則:
1.點擊檢測視圖或者第一響應者傳遞事件或動作訊息給它的視圖控制器(如果有的話),如果沒有一個視圖控制器,就傳遞給他的父視圖
2.如果一個視圖或者它的視圖控制器不能處理這個事件或動作訊息,它將傳遞給該視圖的父視圖
3.在這個視圖層次中的每個後續的父視圖遵循上述的模式,如果它不能處理這個事件或動作訊息的話
4.最頂層的視圖如果不能處理這個事件或動作訊息,就傳遞給UIWindow對象來處理
5.如果UIWindow對象也不能處理,就傳給單件應用程式物件UIApplication,如果應用程式物件也不能處理這個事件或動作訊息,將拋棄它
四.手勢
1.手勢辨識器是對觸摸事件做了封裝,手勢辨識器本身起到了識別作用
2.手勢辨識器是iOS中比較抽象的一個類,用於識別一個手勢,所謂手勢:有規律的觸摸
手勢分類:
iOS-事件處理