iOS手势操作简介(三)
監(jiān)聽觸摸事件的做法
如果想監(jiān)聽一個(gè)view上面的觸摸事件,之前的做法是
自定義一個(gè)view
實(shí)現(xiàn)view的touches方法,在方法內(nèi)部實(shí)現(xiàn)具體處理代碼
通過touches方法監(jiān)聽view觸摸事件,有很明顯的幾個(gè)缺點(diǎn)
必須得自定義view
由于是在view內(nèi)部的touches方法中監(jiān)聽觸摸事件,因此默認(rèn)情況下,無法讓其他外界對象監(jiān)聽view的觸摸事件
不容易區(qū)分用戶的具體手勢行為
iOS 3.2之后,蘋果推出了手勢識(shí)別功能(Gesture Recognizer),在觸摸事件處理方面,大大簡化了開發(fā)者的開發(fā)難度
UIGestureRecognizer
為了完成手勢識(shí)別,必須借助于手勢識(shí)別器—-UIGestureRecognizer
利用UIGestureRecognizer,能輕松識(shí)別用戶在某個(gè)view上面做的一些常見手勢
UIGestureRecognizer是一個(gè)抽象類,定義了所有手勢的基本行為,使用它的子類才能處理具體的手勢
UITapGestureRecognizer(敲擊)
UIPinchGestureRecognizer(捏合,用于縮放)
UIPanGestureRecognizer(拖拽)
UISwipeGestureRecognizer(輕掃)
UIRotationGestureRecognizer(旋轉(zhuǎn))
UILongPressGestureRecognizer(長按)
每一個(gè)手勢識(shí)別器的用法都差不多,比如UITapGestureRecognizer的使用步驟如下
創(chuàng)建手勢識(shí)別器對象
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] init];
設(shè)置手勢識(shí)別器對象的具體屬性
// 連續(xù)敲擊2次
tap.numberOfTapsRequired = 2;
// 需要2根手指一起敲擊
tap.numberOfTouchesRequired = 2;
添加手勢識(shí)別器到對應(yīng)的view上
[self.iconView addGestureRecognizer:tap];
監(jiān)聽手勢的觸發(fā)
[tap addTarget:self action:@selector(tapIconView:)];
手勢識(shí)別的狀態(tài):
typedef NS_ENUM(NSInteger, UIGestureRecognizerState) {
// 沒有觸摸事件發(fā)生,所有手勢識(shí)別的默認(rèn)狀態(tài)
UIGestureRecognizerStatePossible,
// 一個(gè)手勢已經(jīng)開始但尚未改變或者完成時(shí)
UIGestureRecognizerStateBegan,
// 手勢狀態(tài)改變
UIGestureRecognizerStateChanged,
// 手勢完成
UIGestureRecognizerStateEnded,
// 手勢取消,恢復(fù)至Possible狀態(tài)
UIGestureRecognizerStateCancelled,
// 手勢失敗,恢復(fù)至Possible狀態(tài)
UIGestureRecognizerStateFailed,
// 識(shí)別到手勢識(shí)別
UIGestureRecognizerStateRecognized = UIGestureRecognizerStateEnded
};
總結(jié)
以上是生活随笔為你收集整理的iOS手势操作简介(三)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【iKBC poker2】使用说明书(简
- 下一篇: iOS手势操作简介(四)