使用iOS手勢UIGestureRecognizer

UIKit中包含了UIGestureRecognizer類,用於檢測發生在設備中的手勢。UIGestureRecognizer是一個抽象類,定義了所有手勢的基本行爲,它有下面一些子類用於處理具體的手勢:  

  1、拍擊UITapGestureRecognizer (任意次數的拍擊)   
  2、向裏或向外捏UIPinchGestureRecognizer (用於縮放)   
  3、搖動或者拖拽UIPanGestureRecognizer   
  4、擦碰UISwipeGestureRecognizer (以任意方向)   
  5、旋轉UIRotationGestureRecognizer (手指朝相反方向移動)   
  6、長按UILongPressGestureRecognizer  
 
對於不同類型的手勢識別器,具有不同的配置屬性。比如UITapGestureRecognizer,可以配置拍擊次數。界面接收到手勢之後,可以發送一個消息,用於處理響應手勢動作後的任務。當然,不同的手勢識別器,發送的消息方法也會有所不同。下面列舉幾個具體示例代碼:  

 
一個手指,拍擊兩次手勢 
 
// 創建一個手勢識別器 
 
UITapGestureRecognizer *oneFingerTwoTaps = 
 
  [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(oneFingerTwoTaps)] autorelease]; 
 
// Set required taps and number of touches 
 
[oneFingerTwoTaps setNumberOfTapsRequired:2]; 
 
[oneFingerTwoTaps setNumberOfTouchesRequired:1]; 
 
// Add the gesture to the view 
 
[[self view] addGestureRecognizer:oneFingerTwoTaps]; 
 
消息方法oneFingerTwoTaps 
 
- (void)oneFingerTwoTaps 
 
{ 
 
  NSLog(@"Action: One finger, two taps"); 
 
} 
 
兩個手指,拍擊兩次手勢 
 
    UITapGestureRecognizer *twoFingersTwoTaps = 
 
      [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(twoFingersTwoTaps)] autorelease]; 
 
    [twoFingersTwoTaps setNumberOfTapsRequired:2]; 
 
    [twoFingersTwoTaps setNumberOfTouchesRequired:2]; 
 
    [[self view] addGestureRecognizer:twoFingersTwoTaps]; 
 
消息方法twoFingersTwoTaps 
 
    - (void)twoFingersTwoTaps { 
 
      NSLog(@"Action: Two fingers, two taps"); 
 
    } 
 
 
一個手指向上、向下擦碰手勢 
 
// 向上擦碰 
 
    UISwipeGestureRecognizer *oneFingerSwipeUp = 
 
      [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(oneFingerSwipeUp:)] autorelease]; 
 
    [oneFingerSwipeUp setDirection:UISwipeGestureRecognizerDirectionUp]; 
 
    [[self view] addGestureRecognizer:oneFingerSwipeUp]; 
 
      
 
    - (void)oneFingerSwipeUp:(UISwipeGestureRecognizer *)recognizer 
 
    { 
 
      CGPoint point = [recognizer locationInView:[self view]]; 
 
      NSLog(@"Swipe up - start location: %f,%f", point.x, point.y); 
 
    } 
 
    // 向下擦碰 
 
    UISwipeGestureRecognizer *oneFingerSwipeDown = 
 
      [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(oneFingerSwipeDown:)] autorelease]; 
 
    [oneFingerSwipeDown setDirection:UISwipeGestureRecognizerDirectionDown]; 
 
    [[self view] addGestureRecognizer:oneFingerSwipeDown]; 
 
      
 
    - (void)oneFingerSwipeDown:(UISwipeGestureRecognizer *)recognizer 
 
    { 
 
      CGPoint point = [recognizer locationInView:[self view]]; 
 
      NSLog(@"Swipe down - start location: %f,%f", point.x, point.y); 
 
    } 
 
旋轉手勢 
 
UIRotationGestureRecognizer *twoFingersRotate = 
 
  [[[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(twoFingersRotate:)] autorelease]; 
 
[[self view] addGestureRecognizer:twoFingersRotate]; 
 
 
 
- (void)twoFingersRotate:(UIRotationGestureRecognizer *)recognizer 
 
{ 
 
  // Convert the radian value to show the degree of rotation 
 
  NSLog(@"Rotation in degrees since last change: %f", [recognizer rotation] * (180 / M_PI)); 
 
} 
 
向裏或向外捏的手勢 
 
UIPinchGestureRecognizer *twoFingerPinch = 
 
  [[[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(twoFingerPinch:)] autorelease]; 
 
[[self view] addGestureRecognizer:twoFingerPinch]; 
 
 
 
- (void)twoFingerPinch:(UIPinchGestureRecognizer *)recognizer 
 
{ 
 
  NSLog(@"Pinch scale: %f", recognizer.scale); 
 
}


http://www.cocoachina.com/bbs/read.php?tid=105316

發佈了17 篇原創文章 · 獲贊 1 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章