一、概述
iPhone中處理觸摸屏的操作,在3.2之前是主要使用的是由UIResponder而來(lái)的如下4種方式:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
但是這種方式甄別不同的手勢(shì)操作實(shí)在是麻煩,需要你自己計(jì)算做不同的手勢(shì)分辨。后來(lái)。。。
蘋果就給出了一個(gè)比較簡(jiǎn)便的方式,就是使用UIGestureRecognizer。
二、UIGestureRecognizer
UIGestureRecognizer基類是一個(gè)抽象類,我們主要是使用它的子類(名字包含鏈接,可以點(diǎn)擊跳到iOS Developer library,看官方文檔):
從名字上我們就能知道, Tap(點(diǎn)擊)、Pinch(捏合)、Rotation(旋轉(zhuǎn))、Swipe(滑動(dòng),快速移動(dòng),是用于監(jiān)測(cè)滑動(dòng)的方向的)、Pan (拖移,慢速移動(dòng),是用于監(jiān)測(cè)偏移的量的)以及 LongPress(長(zhǎng)按)。
舉個(gè)例子,可以在viewDidLoad函數(shù)里面添加:
-(void) viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view from its nib. UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanFrom:)]; [self.view addGestureRecognizer:panRecognizer];//關(guān)鍵語(yǔ)句,給self.view添加一個(gè)手勢(shì)監(jiān)測(cè); panRecognizer.maximumNumberOfTouches = 1; panRecognizer.delegate = self; [panRecognizer release]; }
其它手勢(shì)方法類似。
其核心就是設(shè)置delegate和在需要手勢(shì)監(jiān)測(cè)的view上使用addGestureRecognizer添加指定的手勢(shì)監(jiān)測(cè)。
當(dāng)然要記得在作為delegate的view的頭文件加上<UIGestureRecognizerDelegate>。
不過(guò)有些手勢(shì)是關(guān)聯(lián)的,怎么辦呢?例如 Tap 與 LongPress、Swipe與 Pan,或是 Tap 一次與Tap 主站蜘蛛池模板: 江西省| 石嘴山市| 天长市| 西城区| 惠来县| 运城市| 顺义区| 象山县| 南丰县| 洮南市| 乐业县| 余庆县| 从化市| 嘉黎县| 个旧市| 嫩江县| 孟连| 屏边| 兴化市| 黄陵县| 峨眉山市| 建昌县| 扶余县| 斗六市| 高密市| 页游| 本溪| 九龙县| 邹城市| 治县。| 盐山县| 东光县| 中方县| 定结县| 井研县| 城步| 修文县| 台前县| 长武县| 泾阳县| 全南县|