你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> ios的手勢操作之UIGestureRecognizer淺析(引薦)

ios的手勢操作之UIGestureRecognizer淺析(引薦)

編輯:IOS開發綜合

一、概述

iPhone中處置觸摸屏的操作,在3.2之前是次要運用的是由UIResponder而來的如下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

但是這種方式鑒別不同的手勢操作真實是費事,需求你自己計算做不同的手勢分辨。後來。。。

蘋果就給出了一個比擬簡便的方式,就是運用UIGestureRecognizer。

二、UIGestureRecognizer

UIGestureRecognizer基類是一個籠統類,我們次要是運用它的子類(名字包括鏈接,可以點擊跳到IOS Developer library,看官方文檔):

    UITapGestureRecognizer UIPinchGestureRecognizer UIRotationGestureRecognizer UISwipeGestureRecognizer UIPanGestureRecognizer UILongPressGestureRecognizer

從名字上我們就能知道, Tap(點擊)、Pinch(捏合)、Rotation(旋轉)、Swipe(滑動,疾速挪動,是用於監測滑動的方向的)、Pan (拖移,慢速挪動,是用於監測偏移的量的)以及 LongPress(長按)。

舉個例子,可以在viewDidLoad函數外面添加:

-(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];//關鍵語句,給self.view添加一個手勢監測; 
 panRecognizer.maximumNumberOfTouches = 1; 
 panRecognizer.delegate = self; 
 [panRecognizer release]; 
} 

其它手勢辦法相似。

其中心就是設置delegate和在需求手勢監測的view上運用addGestureRecognizer添加指定的手勢監測。

當然要記得在作為delegate的view的頭文件加上<UIGestureRecognizerDelegate>。

不過有些手勢是關聯的,怎樣辦呢?例如 Tap 與 LongPress、Swipe與 Pan,或是 Tap 一次與Tap 兩次。

手勢辨認是具有互斥的准繩的,比方單擊和雙擊,假如它辨認出一種手勢,其後的手勢將不被辨認。所以關於關聯手勢,要做特殊處置以協助順序鑒別,應該把以後手勢歸結到哪一類手勢外面。

比方,單擊和雙擊並存時,假如不做處置,它就只能發送出單擊的音訊。為了可以辨認出雙擊手勢,就需求做一個特殊處置邏輯,即先判別手勢能否是雙擊,在雙擊生效的狀況下作為單擊手勢處置。運用
[A requireGestureRecognizerToFail:B]函數,它可以指定當A手勢發作時,即使A曾經滿足條件了,也不會立即觸發,會等到指定的手勢B確定失敗之後才觸發。

- (void)viewDidLoad  
{ 
  // 單擊的 Recognizer 
  UITapGestureRecognizer* singleRecognizer; 
  singleRecognizer = [[UITapGestureRecognizer alloc] initWithtarget:selfaction:@selector(SingleTap:)]; 
  //點擊的次數 
  singleTapRecognizer.numberOfTapsRequired = 1; // 單擊 
 
  //給self.view添加一個手勢監測; 
 
 [self.view addGestureRecognizer:singleRecognizer]; 
 
  
  // 雙擊的 Recognizer 
  UITapGestureRecognizer* doubleRecognizer = [[UITapGestureRecognizer alloc] initWithtarget:selfaction:@selector(DoubleTap:)]; 
  doubleRecognizer.numberOfTapsRequired = 2; // 雙擊 
  //關鍵語句,給self.view添加一個手勢監測; 
  [self.view addGestureRecognizer:doubleRecognizer]; 
   
  // 關鍵在這一行,雙擊手勢確定監測失敗才會觸發單擊手勢的相應操作 
  [singleRecognizer requireGestureRecognizerToFail:doubleRecognizer]; 
  [singleRecognizer release]; 
  [doubleRecognizer release]; 
} 
 
-(void)SingleTap:(UITapGestureRecognizer*)recognizer 
{ 
//處置單擊操作 
} 
 
-(void)DoubleTap:(UITapGestureRecognizer*)recognizer 
{ 
//處置雙擊操作 
} 

三、iphone操作手勢的大約品種

1.點擊(Tap)

點擊作為最常用手勢,用於按下或選擇一個控件或條目(相似於普通的鼠標點擊)、

2.拖動(Drag)

拖動用於完成一些頁面的滾動,以及對控件的挪動功用。

3.滑動(Flick)

滑動用於完成頁面的疾速滾動和翻頁的功用。

4.橫掃(Swipe)

橫掃手勢用於激活列表項的快捷操作菜單

5.雙擊(Double Tap)

雙擊縮小並居中顯示圖片,或恢恢復大小(假如以後曾經縮小)。同時,雙擊可以激活針對文字編輯菜單。

6.縮小(Pinch open)

縮小手勢可以完成以下功用:翻開訂閱源,翻開文章的概況。在照片檢查的時分,縮小手勢也可完成縮小圖片的功用。

7.減少(Pinch close)

減少手勢,可以完成與縮小手勢相反且對應的功用的功用:封閉訂閱源加入到首頁,封閉文章加入至索引頁。在照片檢查的時分,減少手勢也可完成減少圖片的功用。

8.長按(Touch &Hold)

在我的訂閱頁,長按訂閱源將自動進入編輯形式,同時選中手指以後按下的訂閱源。這時可直接拖動訂閱源挪動地位。

針對文字長按,將呈現縮小鏡輔佐功用。松開後,則呈現編輯菜單。

針對圖片長按,將呈現編輯菜單。

9.搖擺(Shake)

搖擺手勢,將呈現撤銷與重做菜單。次要是針對用戶文本輸出的。

以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支持本站。

【ios的手勢操作之UIGestureRecognizer淺析(引薦)】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved