ios事件處理

1.ios處理三種類型的事件:多點觸碰、重力加速、遠程控制;
2.一些事件組合成爲常見手勢,被封裝在UIKit中以方便編程,大部分需求可直接使用現有手勢來完成,如有特殊需求也可自己擴展;
3.現有的手勢有6種:
    拍擊UITapGestureRecognizer (任意次數的拍擊)  
    向裏或向外捏UIPinchGestureRecognizer (用於縮放)  
    搖動或者拖拽UIPanGestureRecognizer (拖動) 
    擦碰UISwipeGestureRecognizer (以任意方向)  
    旋轉UIRotationGestureRecognizer (手指朝相反方向移動)  
    長按UILongPressGestureRecognizer (長按)
4.UIEvent對象封裝了觸摸,搖晃以及遠程控制等信息,通過響應鏈找到應該響應事件的對象,再對具體的對象處理事件;
5.使用手勢的方式一般爲:創建並配置一個手勢識別對象,將該對象與一個view相關聯,實現手勢處理方法;
6.通過gestureRecognizer可以拿到手勢在view中的位置;
7.requireGestureRecognizerToFail方法可以讓其它的手勢識別不起作用,從而達到調整手勢識別優先級的作用;
8.手勢識別器的代理可以實現是否應開始接收手勢等方法,當某些條件不滿足時,可禁止手勢識別,比如非目標view上的手勢不進行識別;
9.將gestureRecognizer關聯到控件的父類上,則其子類會接收到原始的事件而非手勢;一般情況下,系統會無試圖
10.事件處理過程有幾步:觸碰開始,觸碰移動,觸碰結束,觸碰取消,對應到四個方法可以對應:touchesBegan:withEvent:, touchesMoved:withEvent:, touchesEnded:withEvent:, and touchesCancelled:withEvent:在UIResponder的子類中實現這四個方法,在其中指定自己自定義的手勢對象狀態爲已識別或識別失敗,就可以達到自定義手勢的功能;
11.觸碰事件通過hit-testing來找到響應者,首先會從窗口中最大的view開始,如果觸碰在該範圍內,則遍歷其子view,判斷是否在某個子view,遞歸下去,直到某個最小的對象爲止;hit-testing方法也可重載,可實現特定的響應對象查找邏輯;
12.其它事件則通過響應者鏈來查找響應者,可以調用對象的becomeFirstResponder來使之響應事件,遠程和motion事件的響應者必須實現指定的協議方法;
13.默認響應者鏈順序爲:初始view—>父view—>...—>viewcontroller—>window—>Application;
14.userInteractionEnabled可關閉事件響應,而beginIgnoringInteractionEvents和endIgnoringInteractionEvents可暫時忽略事件響應;
15.重力加速感應的事件只能感知到事件的發生,實際要做的動作還需要使用重力加速的類庫來獲取當前的座標值來根據需求進行。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章