iOS手勢(shì)之使用UIGestureRecognizer

使用iOS手勢(shì)UIGestureRecognizer.jpg
UIKit中包含了UIGestureRecognizer類,用于檢測(cè)發(fā)生在設(shè)備中的手勢(shì)。

UIGestureRecognizer是一個(gè)抽象類,定義了所有手勢(shì)的 基本行為,它有下面一些子類用于處理具體的手勢(shì):

1、拍擊UITapGestureRecognizer (任意次數(shù)的拍擊)

2、向里或向外捏UIPinchGestureRecognizer (用于縮放)

3、搖動(dòng)或者拖拽UIPanGestureRecognizer

4、擦碰UISwipeGestureRecognizer (以任意方向)

5、旋轉(zhuǎn)UIRotationGestureRecognizer (手指朝相反方向移動(dòng))

6、長按UILongPressGestureRecognizer對(duì)于不同類型的手勢(shì)識(shí)別器,具有不同的配置屬性。比如UITapGest ureRecognizer,可以配置拍擊次數(shù)。界面接收到手勢(shì)之后,可以發(fā)送一個(gè)消息,用于處理響應(yīng)手勢(shì)動(dòng)作后的任務(wù)。

當(dāng)然,不同的手勢(shì)識(shí)別器,發(fā)送的消息方法也會(huì) 有所不同。下面列舉幾個(gè)具體示例代碼

一個(gè)手指,拍擊兩次手勢(shì)

// 創(chuàng)建一個(gè)手勢(shì)識(shí)別器

    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");
    }

兩個(gè)手指,拍擊兩次手勢(shì)

    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");
}

一個(gè)手指向上、向下擦碰手勢(shì)

// 向上擦碰

    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);

}

旋轉(zhuǎn)手勢(shì)

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));

}

向里或向外捏的手勢(shì)

    UIPinchGestureRecognizer *twoFingerPinch =
[[[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(twoFingerPinch:)] autorelease];
[[self view] addGestureRecognizer:twoFingerPinch];

- (void)twoFingerPinch:(UIPinchGestureRecognizer *)recognizer
{
 NSLog(@"Pinch scale: %f", recognizer.scale);
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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