一店印、概述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)掰烟。。急波。蘋(píng)果就給出了一個(gè)比較簡(jiǎn)便的方式从铲,就是使用UIGestureRecognizer。二澄暮、UIGestureRecognizerUIGestureRecognizer基類(lèi)是一個(gè)抽象類(lèi)名段,我們主要是使用它的子類(lèi)(名字包含鏈接,可以點(diǎn)擊跳到ios Developer library泣懊,看官方文檔):UITapGestureRecognizerUIPinchGestureRecognizerUIRotationGestureRecognizerUISwipeGestureRecognizerUIPanGestureRecognizerUILongPressGestureRecognizer從名字上我們就能知道伸辟, 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ù)里面添加:[cpp] view plain copy print?-(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ì)方法類(lèi)似。其核心就是設(shè)置delegate和在需要手勢(shì)監(jiān)測(cè)的view上使用addGestureRecognizer添加指定的手勢(shì)監(jiān)測(cè)梗掰。當(dāng)然要記得在作為delegate的view的頭文件加上嵌言。
不過(guò)有些手勢(shì)是關(guān)聯(lián)的,怎么辦呢及穗?例如 Tap 與 LongPress摧茴、Swipe與 Pan,或是 Tap 一次與Tap 兩次埂陆。
手勢(shì)識(shí)別是具有互斥的原則的苛白,比如單擊和雙擊,如果它識(shí)別出一種手勢(shì)焚虱,其后的手勢(shì)將不被識(shí)別购裙。所以對(duì)于關(guān)聯(lián)手勢(shì),要做特殊處理以幫助程序甄別鹃栽,應(yīng)該把當(dāng)前手勢(shì)歸結(jié)到哪一類(lèi)手勢(shì)里面躏率。
比如,單擊和雙擊并存時(shí),如果不做處理薇芝,它就只能發(fā)送出單擊的消息蓬抄。為了能夠識(shí)別出雙擊手勢(shì),就需要做一個(gè)特殊處理邏輯夯到,即先判斷手勢(shì)是否是雙擊嚷缭,在雙擊失效的情況下作為單擊手勢(shì)處理。使用
[A requireGestureRecognizerToFail:B]函數(shù)耍贾,它可以指定當(dāng)A手勢(shì)發(fā)生時(shí)阅爽,即便A已經(jīng)滿足條件了,也不會(huì)立刻觸發(fā)逼争,會(huì)等到指定的手勢(shì)B確定失敗之后才觸發(fā)优床。
[cpp] view plain copy print?
- (void)viewDidLoad
{
// 單擊的 Recognizer
UITapGestureRecognizer* singleRecognizer;
singleRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:selfaction:@selector(SingleTap:)];
//點(diǎn)擊的次數(shù)
singleTapRecognizer.numberOfTapsRequired = 1; // 單擊
//給self.view添加一個(gè)手勢(shì)監(jiān)測(cè);
[self.view addGestureRecognizer:singleRecognizer];
// 雙擊的 Recognizer
UITapGestureRecognizer* doubleRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:selfaction:@selector(DoubleTap:)];
doubleRecognizer.numberOfTapsRequired = 2; // 雙擊
//關(guān)鍵語(yǔ)句誓焦,給self.view添加一個(gè)手勢(shì)監(jiān)測(cè);
[self.view addGestureRecognizer:doubleRecognizer];
// 關(guān)鍵在這一行着帽,雙擊手勢(shì)確定監(jiān)測(cè)失敗才會(huì)觸發(fā)單擊手勢(shì)的相應(yīng)操作
[singleRecognizer requireGestureRecognizerToFail:doubleRecognizer];
[singleRecognizer release];
[doubleRecognizer release];
}
-(void)SingleTap:(UITapGestureRecognizer*)recognizer
{
//處理單擊操作
}
-(void)DoubleTap:(UITapGestureRecognizer*)recognizer
{
//處理雙擊操作
}
三杂伟、iphone操作手勢(shì)的大概種類(lèi)
1.點(diǎn)擊(Tap)
點(diǎn)擊作為最常用手勢(shì),用于按下或選擇一個(gè)控件或條目(類(lèi)似于普通的鼠標(biāo)點(diǎn)擊)仍翰、
2.拖動(dòng)(Drag)
拖動(dòng)用于實(shí)現(xiàn)一些頁(yè)面的滾動(dòng)赫粥,以及對(duì)控件的移動(dòng)功能。
3.滑動(dòng)(Flick)
滑動(dòng)用于實(shí)現(xiàn)頁(yè)面的快速滾動(dòng)和翻頁(yè)的功能予借。
4.橫掃(Swipe)
橫掃手勢(shì)用于激活列表項(xiàng)的快捷操作菜單
5.雙擊(Double Tap)
雙擊放大并居中顯示圖片越平,或恢復(fù)原大小(如果當(dāng)前已經(jīng)放大)灵迫。同時(shí)秦叛,雙擊能夠激活針對(duì)文字編輯菜單。
6.放大(Pinch open)
放大手勢(shì)可以實(shí)現(xiàn)以下功能:打開(kāi)訂閱源瀑粥,打開(kāi)文章的詳情挣跋。在照片查看的時(shí)候,放大手勢(shì)也可實(shí)現(xiàn)放大圖片的功能狞换。
7.縮小(Pinch close)
縮小手勢(shì)避咆,可以實(shí)現(xiàn)與放大手勢(shì)相反且對(duì)應(yīng)的功能的功能:關(guān)閉訂閱源退出到首頁(yè),關(guān)閉文章退出至索引頁(yè)修噪。在照片查看的時(shí)候查库,縮小手勢(shì)也可實(shí)現(xiàn)縮小圖片的功能。
8.長(zhǎng)按(Touch &Hold)
在我的訂閱頁(yè)黄琼,長(zhǎng)按訂閱源將自動(dòng)進(jìn)入編輯模式樊销,同時(shí)選中手指當(dāng)前按下的訂閱源。這時(shí)可直接拖動(dòng)訂閱源移動(dòng)位置。
針對(duì)文字長(zhǎng)按现柠,將出現(xiàn)放大鏡輔助功能院领。松開(kāi)后,則出現(xiàn)編輯菜單够吩。
針對(duì)圖片長(zhǎng)按比然,將出現(xiàn)編輯菜單。
9.搖晃(Shake)
搖晃手勢(shì)周循,將出現(xiàn)撤銷(xiāo)與重做菜單强法。主要是針對(duì)用戶(hù)文本輸入的。