原創文章,歡迎轉載。轉載請註明:關東昇的博客 php
應用與用戶進行交互,依賴於各類各樣的事件。事件響應者對象是能夠響應事件並對其進行處理的對象,響應者鏈是由一系列連接在一塊兒的響應者組成的。響應者鏈在事件處理中是很是重要的,響應者鏈能夠把用戶事件路由給正確的對象。 編程
響應者對象與響應鏈微信
UIResponder是全部響應者對象的基類,它不只爲事件處理,並且也爲常見的響應者行爲定義編程接口。UIApplication、UIView(及其子類,包括UIWindow)和UIViewController(及其子類)都直接或間接地繼承自UIResponder類。 網站
第一響應者是應用程序中當前負責接收觸摸事件的響應者對象(一般是一個UIView對象)。UIWindow對象以消息的形式將事件發送給第一響應者,使其有機會首先處理事件。若是第一響應者沒有進行處理,系統就將事件(經過消息)傳遞給響應者鏈中的下一個響應者,看看它是否能夠進行處理。設計
響應者鏈是一系列連接在一塊兒的響應者對象,它容許響應者對象將處理事件的責任傳遞給其餘更高級別的對象。隨着應用程序尋找可以處理事件的對象,事件就在響應者鏈中向上傳遞。響應者鏈由一系列「下一個響應者」組成。code
1.第一響應者將事件傳遞給它的視圖控制器(若是有的話),而後是它的父視圖。對象
2.相似地,視圖層次中的每一個後續視圖都首先傳遞給它的視圖控制器(若是有的話),而後是它的父視圖。blog
3.最上層的容器視圖將事件傳遞給UIWindow對象。繼承
4.UIWindow對象將事件傳遞給UIApplication單例對象。 教程
觸摸事件
觸摸(UITouch)對象表示屏幕上的一個觸摸事件,訪問觸摸是經過UIEvent對象傳遞給事件響應者對象的。觸摸對象有時間和空間兩方面。
1.時間方面
時間方面信息稱爲階段(phase),表示觸摸是否剛剛開始、是否正在移動或處於靜止狀態,以及什麼時候結束,也就是手指什麼時候從屏幕擡起。
在給定的觸摸階段中,若是發生新的觸摸動做或已有的觸摸動做發生變化,則應用程序就會發送這些消息。
2.空間方面
觸摸點對象還包括當前在視圖或窗口中的位置信息,以及以前的位置信息(若是有的話)。下面的方法是能夠得到觸摸點所在窗口或視圖中的位置。
func locationInView(_ view: UIView?) -> CGPoint
得到前一個觸摸點所在窗口或視圖中的位置信息:
func previousLocationInView(_ view: UIView?) -> CGPoint
歡迎關注關東昇新浪微博@tony_關東昇。
關注智捷課堂微信公共平臺,瞭解最新技術文章、圖書、教程信息
更多精品iOS、Cocos、移動設計課程請關注智捷課堂官方網站:http://www.zhijieketang.com
智捷課堂論壇網站:http://51work6.com/forum.php