標籤:
一、監聽觸摸事件的做法 如果想監聽一個view上面的觸摸事件,之前的做法通常是:先自訂一個view,然後再實現view的touches方法,在方法內部實現具體處理代碼通過touches方法監聽view觸摸事件,有很明顯的幾個缺點(1)必須得自訂view(2)由於是在view內部的touches方法中監聽觸摸事件,因此預設情況下,無法讓其他外界對象監聽view的觸摸事件(需要通過代理)(3)不容易區分使用者的具體手勢行為iOS 3.2之後,蘋果推出了手勢識別功能(Gesture Recognizer),在觸摸事件處理方面,大大簡化了開發人員的開發難度
二、手勢辨識器為了完成手勢識別,必須藉助於手勢辨識器----UIGestureRecognizer利用UIGestureRecognizer,能輕鬆識別使用者在某個view上面做的一些常見手勢UIGestureRecognizer是一個抽象類別,定義了所有手勢的基本行為,使用它的子類才能處理具體的手勢 UITapGestureRecognizer(輕拍)UIPinchGestureRecognizer(捏合,用於縮放)UIPanGestureRecognizer(拖拽)UISwipeGestureRecognizer(輕掃)UIRotationGestureRecognizer(旋轉)UILongPressGestureRecognizer(長按)UIScreenEdgePanGestureRecognizer(螢幕邊緣輕掃)
代碼說明:手勢的常用狀態如下
開始:UIGestureRecognizerStateBegan
改變:UIGestureRecognizerStateChanged
結束:UIGestureRecognizerStateEnded
取消:UIGestureRecognizerStateCancelled
失敗:UIGestureRecognizerStateFailed
(一)、輕拍手勢 每一個手勢辨識器的用法都差不多,比如UITapGestureRecognizer的使用步驟如下:(1)建立手勢辨識器對象UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] init];(2)設定手勢辨識器對象的具體屬性// 連續輕拍2次tap.numberOfTapsRequired = 2;// 需要2根手指一起觸摸tap.numberOfTouchesRequired = 2;(3)添加手勢辨識器到對應的view上[self.iconView addGestureRecognizer:tap];(4)監聽手勢的觸發[tap addTarget:self action:@selector(tapIconView:)];屬性介紹:numberOfTouchesRequired //需要多少根手指一起輕拍(預設為1根)numberOfTapsRequired //需要輕拍多少下(預設為1) 實現方法
(二)、長按手勢 實現方法
(三)、旋轉手勢
UIRotationGestureRecognizer手勢辨識器,就像名稱一樣,這個類能用來監聽和捕獲旋轉的手勢,能協助你建立出更直觀的圖形化使用者介面,比如一種情境,當你的應用中有一個展示圖片的視圖,使用者需要通過旋轉圖片來調整圖片的方向。
UIRotationGestureRecognizer這個類有一個rotation的屬性,這個屬性可以用來設定旋轉的方向和旋轉的弧度。旋轉是從手指的初始位置(UIGestureRecognizerStateBegan)到最終位置(UIGestureRecognizerStateBegan)決定的。
為了對繼承自UIView的UI元素進行旋轉,你可以將旋轉手勢辨識器的rotation屬性傳遞給CGAffineTransformMakeRotation方法,以製作一個仿射轉場
實現方法
iOS 開發UI中輕拍,長按,旋轉手勢辨識器方法