手勢在iOS中是非常重要的,它極大的提高了移動設備的便攜使用性。
在iOS3.2之後,系統提供了一些常用的手勢,開發者可以可以直接使用它們進行一些手勢操作,系統提供的都都是UIGestureRecognizer的子類。
常用手勢分別爲:
1.UIPanGestureRecognizer 拖動手勢
2.UIPinchGestureRecognizer 捏合手勢
3.UIRotationGestureRecognizer 旋轉手勢
4.UITapGestureRecognizer 點擊手勢
5.UILongPressGestureRecognizer 長按手勢
6.UISwipeGestureRecognizer 輕掃手勢
7.自定義手勢繼承於UIGestureRecognizer
手勢的狀態說明:
typedef NS_ENUM(NSInteger, UIGestureRecognizerState) {
UIGestureRecognizerStatePossible, //可能觸發了觸摸事件,但是還沒有識別到是哪種手勢,是默認的手勢狀態
UIGestureRecognizerStateBegan, // 手勢已經開始了,並被識別,但是這時可能手勢還沒進行完
UIGestureRecognizerStateChanged, // 手勢發生改變
UIGestureRecognizerStateEnded, // 手勢完成
UIGestureRecognizerStateCancelled, // 手勢被取消
UIGestureRecognizerStateFailed, // 沒有識別手勢
UIGestureRecognizerStateRecognized = UIGestureRecognizerStateEnded // 手勢識別完成,同時UIGestureRecognizerStateEnded
};
手勢類型:
離散型手勢:手勢一旦識別就無法取消,而且只會調用一次手勢操作事件(初始化手勢時指定的回調方法)。
連續型手勢:會多次調用手勢操作事件,而且在連續手勢識別後可以取消手勢。
手勢的使用方法:
1.創建手勢識別器對象實例。創建時,指定一個回調方法,當手勢開始,改變、或結束時,執行回調方法;
2.設置手勢識別器對象實例的相關屬性,例如:長按手勢的長按時間,點擊手勢的手指數等等。
3.添加到需要識別的 View 中。每個手勢只對應一個 View,當屏幕觸摸在 View 的邊界內時,如果手勢和預定的一樣,那就會執行回調方法。
代碼:https://github.com/KityPei/GestureRecognizerDemo.git