您的位置:首页 > 移动开发 > IOS开发

ios 手势

2015-05-29 08:54 459 查看
iOS手势UIGestureRecognizer
UIKit中包含了UIGestureRecognizer类,用于检测发生在设备中的手势。UIGestureRecognizer是一个抽象类,定义了所有手势的基本行为,它有下面一些子类用于处理具体的手势:
1、拍击UITapGestureRecognizer (任意次数的拍击)
2、捏合UIPinchGestureRecognizer (用于缩放)
3、摇动或者拖拽UIPanGestureRecognizer
4、扫动UISwipeGestureRecognizer (以任意方向)
5、旋转UIRotationGestureRecognizer (手指朝相反方向移动)
6、长按UILongPressGestureRecognizer
对于不同类型的手势识别器,具有不同的配置属性。比如UITapGestureRecognizer,可以配置拍击次数。界面接收到手势之后,可以发送一个消息,用于处理响应手势动作后的任务。当然,不同的手势识别器,发送的消息方法也会有所不同。
下面讲解一下各个手势识别器的使用步骤:
注意各个手势识别器使用前均需开启多点触控!
UITapGestureRecognizer:
//1、创建轻击手势识别器
//2、配置属性(numberOfTapsRequired需要轻击次数,numberOfTouchesRequired需要几点同时触摸才能触发)
//3、添加轻击手势识别器
示例代码:
//创建轻击手势识别器
UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapHandle:)];
tapGestureRecognizer.numberOfTapsRequired = 2;//需要轻击两次才能触发
tapGestureRecognizer.numberOfTouchesRequired = 2;//需要两点同时触摸才能触发
//添加轻击手势识别器
[self.view addGestureRecognizer:tapGestureRecognizer];

UISwipeGestureRecognizer
//1、创建扫动手势识别器
//2、配置属性(direction扫动方向:UISwipeGestureRecognizerDirectionLeft|UISwipeGestureRecognizerDirectionRight,UISwipeGestureRecognizerDirectionUp|UISwipeGestureRecognizerDirectionDown)
//3、添加扫动手势识别器
//4、在扫动手势识别器触发的方法中判断direction属性识别扫动方向。
示例代码:
//1、创建扫动手势识别器
UISwipeGestureRecognizer * leftAndRight = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(handleSwipe:)];
//2、配置属性(direction扫动方向:)
leftAndRight.direction = UISwipeGestureRecognizerDirectionLeft | UISwipeGestureRecognizerDirectionRight;
[self.view addGestureRecognizer:leftAndRight];
UISwipeGestureRecognizer * upAndDown = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(handleSwipe:)];
upAndDown.direction = UISwipeGestureRecognizerDirectionUp | UISwipeGestureRecognizerDirectionDown;
//3、添加扫动手势识别器
[self.view addGestureRecognizer:upAndDown];
//4、在扫动手势识别器触发的方法中判断direction属性识别扫动方向。
int opt = recognizer.direction;
if(opt == (UISwipeGestureRecognizerDirectionLeft | UISwipeGestureRecognizerDirectionRight)){
self.messageLabel.text = @"发生了水平方向的扫动!";
} else if (opt == (UISwipeGestureRecognizerDirectionUp | UISwipeGestureRecognizerDirectionDown)){
self.messageLabel.text = @"发生了竖直方向的扫动!";
}

UIPinchGestureRecognizer
//1、创建捏合手势识别器
//2、添加捏合手势识别器
//3、在捏合手势识别器触发的方法中捏合。
//3.1获取imageView的frame
//3.2设置frame大小的宽和高,获取手势识别器的缩放倍数(recognizer.scale)*图片的宽和高。
//3.3重置imageView的frame
//3.4重置mageView的center
-(void)changeImageSize:(UIPinchGestureRecognizer *)recognizer
{
CGRect frame = self.imageView.frame;
frame.size.width = recognizer.scale * 128;
frame.size.height = recognizer.scale * 128;
self.imageView.frame = frame;

self.imageView.center = self.view.center;
}

UIRotationGestureRecognizer
//1、创建旋转手势识别器
//2、添加旋转手势识别器
//3、在旋转手势识别器触发的方法中旋转。
- (void)rotateImage:(UIRotationGestureRecognizer *)recognizer {
if([recognizer state] == UIGestureRecognizerStateEnded) {
self.lastRotation = 0.0;
return;
}
CGAffineTransform currentTransform = self.imageView.transform;
CGFloat rotation = 0.0 - (self.lastRotation - recognizer.rotation);
CGAffineTransform newTransform = CGAffineTransformRotate(currentTransform,rotation);
self.imageView.transform = newTransform;
self.lastRotation = recognizer.rotation;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: