本文共 3266 字,大约阅读时间需要 10 分钟。
UIKit中包含了UIGestureRecognizer类,用于检测发生在设备中的手势。UIGestureRecognizer是一个抽象类,定义了所有手势的基本行为,它有下面一些子类用于处理具体的手势:
1、拍击UITapGestureRecognizer (任意次数的拍击)
2、向里或向外捏UIPinchGestureRecognizer (用于缩放)
3、摇动或者拖拽UIPanGestureRecognizer
4、擦碰UISwipeGestureRecognizer (以任意方向)
5、旋转UIRotationGestureRecognizer (手指朝相反方向移动)
6、长按UILongPressGestureRecognizer
对于不同类型的手势识别器,具有不同的配置属性。比如UITapGestureRecognizer,可以配置拍击次数。界面接收到手势之后,可以发送一个消息,用于处理响应手势动作后的任务。当然,不同的手势识别器,发送的消息方法也会有所不同。下面列举几个具体示例代码:
[代码] 一个手指,拍击两次手势
02 | UITapGestureRecognizer *oneFingerTwoTaps = |
03 | [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(oneFingerTwoTaps)] autorelease]; |
06 | [oneFingerTwoTaps setNumberOfTapsRequired:2]; |
07 | [oneFingerTwoTaps setNumberOfTouchesRequired:1]; |
10 | [[self view] addGestureRecognizer:oneFingerTwoTaps]; |
13 | - ( void )oneFingerTwoTaps |
15 | NSLog(@ "Action: One finger, two taps" ); |
[代码] 两个手指,拍击两次手势
01 | UITapGestureRecognizer *twoFingersTwoTaps = |
02 | [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(twoFingersTwoTaps)] autorelease]; |
03 | [twoFingersTwoTaps setNumberOfTapsRequired:2]; |
04 | [twoFingersTwoTaps setNumberOfTouchesRequired:2]; |
05 | [[self view] addGestureRecognizer:twoFingersTwoTaps]; |
08 | - ( void )twoFingersTwoTaps { |
09 | NSLog(@ "Action: Two fingers, two taps" ); |
[代码] 一个手指向上、向下擦碰手势
02 | UISwipeGestureRecognizer *oneFingerSwipeUp = |
03 | [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(oneFingerSwipeUp:)] autorelease]; |
04 | [oneFingerSwipeUp setDirection:UISwipeGestureRecognizerDirectionUp]; |
05 | [[self view] addGestureRecognizer:oneFingerSwipeUp]; |
07 | - ( void )oneFingerSwipeUp:(UISwipeGestureRecognizer *)recognizer |
09 | CGPoint point = [recognizer locationInView:[self view]]; |
10 | NSLog(@ "Swipe up - start location: %f,%f" , point.x, point.y); |
14 | UISwipeGestureRecognizer *oneFingerSwipeDown = |
15 | [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(oneFingerSwipeDown:)] autorelease]; |
16 | [oneFingerSwipeDown setDirection:UISwipeGestureRecognizerDirectionDown]; |
17 | [[self view] addGestureRecognizer:oneFingerSwipeDown]; |
19 | - ( void )oneFingerSwipeDown:(UISwipeGestureRecognizer *)recognizer |
21 | CGPoint point = [recognizer locationInView:[self view]]; |
22 | NSLog(@ "Swipe down - start location: %f,%f" , point.x, point.y); |
[代码] 旋转手势
1 | UIRotationGestureRecognizer *twoFingersRotate = |
2 | [[[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(twoFingersRotate:)] autorelease]; |
3 | [[self view] addGestureRecognizer:twoFingersRotate]; |
5 | - ( void )twoFingersRotate:(UIRotationGestureRecognizer *)recognizer |
8 | NSLog(@ "Rotation in degrees since last change: %f" , [recognizer rotation] * (180 / M_PI)); |
[代码] 向里或向外捏的手势
1 | UIPinchGestureRecognizer *twoFingerPinch = |
2 | [[[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(twoFingerPinch:)] autorelease]; |
3 | [[self view] addGestureRecognizer:twoFingerPinch]; |
5 | - ( void )twoFingerPinch:(UIPinchGestureRecognizer *)recognizer |
7 | NSLog(@ "Pinch scale: %f" , recognizer.scale); |
转载地址:http://zjzli.baihongyu.com/