您的位置:首页 > 产品设计 > UI/UE

使用iOS手势UIGestureRecognizer

2013-02-01 16:06 459 查看
UIKit中包含了UIGestureRecognizer类,用于检测发生在设备中的手势。UIGestureRecognizer是一个抽象类,定义了所有手势的基本行为,它有下面一些子类用于处理具体的手势:

1、拍击UITapGestureRecognizer(任意次数的拍击)

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

3、摇动或者拖拽UIPanGestureRecognizer

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

5、旋转UIRotationGestureRecognizer(手指朝相反方向移动)

6、长按UILongPressGestureRecognizer

对于不同类型的手势识别器,具有不同的配置属性。比如UITapGestureRecognizer,可以配置拍击次数。界面接收到手势之后,可以发送一个消息,用于处理响应手势动作后的任务。当然,不同的手势识别器,发送的消息方法也会有所不同。下面列举几个具体示例代码:

http://www.ctolive.com/space-1023-do-blog-id-2107.html



[代码]一个手指,拍击两次手势

01
//创建一个手势识别器
02
UITapGestureRecognizer*oneFingerTwoTaps=
03
[[[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(oneFingerTwoTaps)]autorelease];
04
05
//Setrequiredtapsandnumberoftouches
06
[oneFingerTwoTapssetNumberOfTapsRequired:2];
07
[oneFingerTwoTapssetNumberOfTouchesRequired:1];
08
09
//Addthegesturetotheview

10
[[selfview]addGestureRecognizer:oneFingerTwoTaps];
11
12
消息方法oneFingerTwoTaps
13
-(
void
)oneFingerTwoTaps
14
{
15
NSLog(@
"Action:Onefinger,twotaps"
);
16
}

[代码]两个手指,拍击两次手势

01
UITapGestureRecognizer*twoFingersTwoTaps=
02
[[[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(twoFingersTwoTaps)]autorelease];
03
[twoFingersTwoTapssetNumberOfTapsRequired:2];
04
[twoFingersTwoTapssetNumberOfTouchesRequired:2];
05
[[selfview]addGestureRecognizer:twoFingersTwoTaps];
06
07
消息方法twoFingersTwoTaps
08
-(
void
)twoFingersTwoTaps{
09
NSLog(@
"Action:Twofingers,twotaps"
);
10
}

[代码]一个手指向上、向下擦碰手势

01
//向上擦碰
02
UISwipeGestureRecognizer*oneFingerSwipeUp=
03
[[[UISwipeGestureRecognizeralloc]initWithTarget:selfaction:@selector(oneFingerSwipeUp:)]autorelease];
04
[oneFingerSwipeUpsetDirection:UISwipeGestureRecognizerDirectionUp];
05
[[selfview]addGestureRecognizer:oneFingerSwipeUp];
06
07
-(
void
)oneFingerSwipeUp:(UISwipeGestureRecognizer*)recognizer
08
{
09
CGPointpoint=[recognizerlocationInView:[selfview]];
10
NSLog(@
"Swipeup-startlocation:%f,%f"
,point.x,point.y);
11
}
12
13
//向下擦碰
14
UISwipeGestureRecognizer*oneFingerSwipeDown=
15
[[[UISwipeGestureRecognizeralloc]initWithTarget:selfaction:@selector(oneFingerSwipeDown:)]autorelease];
16
[oneFingerSwipeDownsetDirection:UISwipeGestureRecognizerDirectionDown];
17
[[selfview]addGestureRecognizer:oneFingerSwipeDown];
18
19
-(
void
)oneFingerSwipeDown:(UISwipeGestureRecognizer*)recognizer
20
{
21
CGPointpoint=[recognizerlocationInView:[selfview]];
22
NSLog(@
"Swipedown-startlocation:%f,%f"
,point.x,point.y);
23
}

[代码]旋转手势

1
UIRotationGestureRecognizer*twoFingersRotate=
2
[[[UIRotationGestureRecognizeralloc]initWithTarget:selfaction:@selector(twoFingersRotate:)]autorelease];
3
[[selfview]addGestureRecognizer:twoFingersRotate];
4
5
-(
void
)twoFingersRotate:(UIRotationGestureRecognizer*)recognizer
6
{
7
//Converttheradianvaluetoshowthedegreeofrotation
8
NSLog(@
"Rotationindegreessincelastchange:%f"
,[recognizerrotation]*(180/M_PI));
9
}

[代码]向里或向外捏的手势

1
UIPinchGestureRecognizer*twoFingerPinch=
2
[[[UIPinchGestureRecognizeralloc]initWithTarget:selfaction:@selector(twoFingerPinch:)]autorelease];
3
[[selfview]addGestureRecognizer:twoFingerPinch];
4
5
-(
void
)twoFingerPinch:(UIPinchGestureRecognizer*)recognizer
6
{
7
NSLog(@
"Pinchscale:%f"
,recognizer.scale);
8
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐