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;
}
ios 手势
最新推荐文章于 2025-05-04 11:21:22 发布