使用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);
}