博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS基础-UIKit框架-手势处理
阅读量:5167 次
发布时间:2019-06-13

本文共 3688 字,大约阅读时间需要 12 分钟。

手势识别器通用代码注释如下(以tap为例):

 

//0.打开UIImageView的用户交互(UIImageView默认不能进行用户交互)self.iconView.userInteractionEnabled = YES;//1.创建手势识别器UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] init];//1.1.设置手势识别器的属性//设置用户必须点击几次才能触发点击事件tap.numberOfTapsRequired = 2;//设置用户必须几根手指同时点击才会触发事件tap.numberOfTouchesRequired = 2;tap.delegate = self;(设置代理并遵守代理协议)//2.添加手势识别器到view[self.iconView addGestureRecognizer:tap];//3.监听手势识别器[tap addTarget:self action:@selector(tapView)]; //该方法返回一个BOOL值,该BOOL值决定了是否响应此次点击事件。所以如果返回NO,就不会调用tapView方法。- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizershouldReceiveTouch:(UITouch *)touch  {//获取点击的位置CGPoint point = [touch locationInView:touch.view];return (point.x > self.iconView.frame.size.width * 0.5)?YES :NO; //监听手势的方法-(void)tapView{    NSLog(@“图片被点击了”);}

  

具体应用:

一、敲击

1.添加一个UIImageView属性iconView

2.敲击事件

-(void)test{self.iconView.userInteractionEnabled = YES;UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] init]; tap.numberOfTapsRequired = 2;tap.numberOfTouchesRequired = 2;[self.iconView addGestureRecognizer:tap];[tap addTarget:self action:@selector(tapView)];}-(void)tapView{    NSLog(@"敲击事件");}

 

二、长按+轻扫

1.添加一个UIView属性costomView
2.长按事件

-(void)test{UILongPressGestureRecognizer longPress = [[UILongPressGestureRecognizer alloc] init];//1.1设置长按手势识别器的属性longPress.minimumPressDuration = 5;//手指按下后事件响应之前允许手指移动的偏移位longPress.allowableMovement = 10;[self.customView addGestureRecognizer:longPress];[longPress addTarget:self action:@selector(longPressView)];}-(void)longPressView{    NSLog(@“长按事件”);}

 

3.轻扫事件

-(void)test{UISwipeGestureRecognizer Swipe = [[UISwipeGestureRecognizer alloc] init];//设置轻扫的方向(每行代码代表一个方向,总共4个方向,可以共存)swipe.direction = UISwipeGestureRecognizerDirecionDown;[self.customView addGestureRecognizer:Swipe];[Swipe addTarget:self action:@selector(SwipeView)];}-(void)SwipeView{     NSLog(@“轻扫事件”);}

 

三、旋转+放缩

1.添加一个UIImageView属性iconView
2.旋转(记得在故事板右边开启多点触控)

-(void)test{  UIRotationGestureRecognizer *gesture = [[UIRotationGestureRecognizer alloc] init];  [self.iconView addGestureRecognizer:gesture];  gesture.delegate = self;  [gesture addTarget:self action:@selector(rotationView:)];}-(void)rotationView:(UIRotationGestureRecognizer *)gesture{    NSLog(@"旋转事件 %.1f", gesture.rotation);  //在传入的transform基础上递增一个弧度  self.iconView.transform = CGAffineTransformMakeRotate     (self.inconView.transform,gesture.rotation);  //每次都把上一次手势的位置作为0度,不这样做的话,如果本来是45度,下次再转1度就会在原有基础上增加46度,而这样就不对了。   gestrue.rotation =0;}

 

  

3.放缩

-(void)test{  //捏合手势  UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc]  init];  [self.iconView addGestureRecognizer:pinch];  pinch.delegate = self;  [pinch addTarget:self action:@selector(pinchView)];}-(void)pinchView:(UIPinchGestureRecognizer *)pinch{    self.iconView.transform = CGAffineTransformScale(self.iconView.transform,pinch.scale,pinch.scale); //如果上一次的位置不设置为1.0,就会在原有基础上继续放缩,这是不对的。   pinch.scale = 1.0;}

 

4.遵从代理协议,实现代理方法,使其支持多手势同时进行

//该方法返回的BOOL值决定了view是否能够同时响应多个手势-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultanenouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{     return YES;}

四、拖拽

1.添加一个UIImageView属性costomView
2.拖拽

-(void)test{UIPanGestureRecognizer *pan= [[UIPanGestureRecognizer alloc]  init];[self.costomView addGestureRecognizer:pan];[pan addTarget:self action:@selector(panView:)];}- (void)panView{    //返回的值是以手指按下的点为原点   CGPoint point = [pan translationInView:pan.view];   CGPoint temp = self.customView.center;   temp.x += point.x;   temp.y += point.y;   self.customView.center = temp;   //将其清零   [pan.setTranlation:CGPointZero inView:pan.view];}

 

转载于:https://www.cnblogs.com/marshall-yin/p/4695892.html

你可能感兴趣的文章
HTML5简单入门系列(四)
查看>>
实现字符串反转
查看>>
转载:《TypeScript 中文入门教程》 5、命名空间和模块
查看>>
苹果开发中常用英语单词
查看>>
[USACO 1.4.3]等差数列
查看>>
Shader Overview
查看>>
Reveal 配置与使用
查看>>
Java中反射的学习与理解(一)
查看>>
C语言初学 俩数相除问题
查看>>
B/S和C/S架构的区别
查看>>
[Java] Java record
查看>>
jQuery - 控制元素显示、隐藏、切换、滑动的方法
查看>>
postgresql学习文档
查看>>
Struts2返回JSON数据的具体应用范例
查看>>
socket阻塞与非阻塞,同步与异步
查看>>
团队工作第二天
查看>>
System类
查看>>
tableView
查看>>
Happy Great BG-卡精度
查看>>
Xamarin Visual Studio不识别JDK路径
查看>>