ios 手势

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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值