UIGestureRecognizer 手勢(shì)

一店印、概述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ù)文本輸入的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末湾笛,一起剝皮案震驚了整個(gè)濱河市饮怯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌嚎研,老刑警劉巖蓖墅,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異临扮,居然都是意外死亡论矾,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)杆勇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)贪壳,“玉大人,你說(shuō)我怎么就攤上這事蚜退∪蜓ィ” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵钻注,是天一觀的道長(zhǎng)蚂且。 經(jīng)常有香客問(wèn)我,道長(zhǎng)队寇,這世上最難降的妖魔是什么膘掰? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮佳遣,結(jié)果婚禮上识埋,老公的妹妹穿的比我還像新娘。我一直安慰自己零渐,他們只是感情好窒舟,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著诵盼,像睡著了一般惠豺。 火紅的嫁衣襯著肌膚如雪银还。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,036評(píng)論 1 285
  • 那天洁墙,我揣著相機(jī)與錄音蛹疯,去河邊找鬼。 笑死热监,一個(gè)胖子當(dāng)著我的面吹牛捺弦,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播孝扛,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼列吼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了苦始?” 一聲冷哼從身側(cè)響起寞钥,我...
    開(kāi)封第一講書(shū)人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎陌选,沒(méi)想到半個(gè)月后理郑,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡咨油,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年香浩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片臼勉。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖餐弱,靈堂內(nèi)的尸體忽然破棺而出宴霸,到底是詐尸還是另有隱情,我是刑警寧澤膏蚓,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布瓢谢,位于F島的核電站,受9級(jí)特大地震影響驮瞧,放射性物質(zhì)發(fā)生泄漏氓扛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一论笔、第九天 我趴在偏房一處隱蔽的房頂上張望采郎。 院中可真熱鬧,春花似錦狂魔、人聲如沸蒜埋。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)整份。三九已至待错,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間烈评,已是汗流浹背火俄。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留讲冠,地道東北人瓜客。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像沟启,于是被迫代替她去往敵國(guó)和親忆家。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容