触摸、手势
触摸:
1、创建一个视图,重写TA在不同阶段的触发的方法,方法如下:
![](https://images2015.cnblogs.com/blog/890519/201602/890519-20160217010329970-2128704849.png)
2、当重写触碰移动方法,想要实现一个视图随着自己的鼠标移动的方法时
获取触摸在屏幕上的手指对象:
UITouch *tou = [touches anyObject];
(1)要获取手指移动之前的位置
之前的位置 = [tou previousLocationInView:self]
(2)要获取手指移动之后的位置
之后的位置 = [tou locationInView];
(3)视图现在的位置的X值就是: 自己原来的位置 + (手指移动之后的x的值 - 手指移动之前x的值)
(4)视图现在位置的y值同理
代码如下:
![](https://images2015.cnblogs.com/blog/890519/201602/890519-20160217010407611-1546830893.png)
拓展:视图中有一个属性是userInteractionEnabled,这个属性的默认值是YES,如果把TA的这个属性设置为NO,它将不能触发事件
手势:
创建手势的步骤:
1、创建手势识别器对象、如创建一个敲击手势对象
手势类型 *手势名 =[ [手势类型 alloc] init];如:
![](https://images2015.cnblogs.com/blog/890519/201602/890519-20160217010424829-1281790839.png)
2、可以设置敲击手势要连续敲击几次,手势识别才会成功,如:
![](https://images2015.cnblogs.com/blog/890519/201602/890519-20160217010444126-591238019.png)
3、可以设置要几根手指同时敲击,手势才会识别成功
![](https://images2015.cnblogs.com/blog/890519/201602/890519-20160217010537595-854201064.png)
4、为对象添加手势识别器对象
![](https://images2015.cnblogs.com/blog/890519/201602/890519-20160217010640220-426017096.png)
5、为手势添加监听方法(可以在tapView1方法中打印一句话)
![](https://images2015.cnblogs.com/blog/890519/201602/890519-20160217010658501-996432676.png)
6、记得打开用户交互
![](https://images2015.cnblogs.com/blog/890519/201602/890519-20160217010708501-1454004702.png)
注:清扫的属性:direction,设置清扫的方向:
![](https://images2015.cnblogs.com/blog/890519/201602/890519-20160217010737501-228149498.png)
长按的属性:
![](https://images2015.cnblogs.com/blog/890519/201602/890519-20160217010756767-1463844102.png)
当手势是旋转的时候:方法内部的代码如下:
![](https://images2015.cnblogs.com/blog/890519/201602/890519-20160217010807126-55223435.png)
当手势是缩放的时候,方法内部的代码如下:
![](https://images2015.cnblogs.com/blog/890519/201602/890519-20160217010851251-681782134.png)
当手势是平移的时候,方法内部的代码如下:
![](https://images2015.cnblogs.com/blog/890519/201602/890519-20160217010905220-731686002.png)
拓展1:手势是有代理对象的,可以为手势添加代理,可以在代理中阻断手势的运行等
步骤:
1、如:tap.delegate = self;
2、如:
![](https://images2015.cnblogs.com/blog/890519/201602/890519-20160217010933189-1299689169.png)
当有敲击手势的时候,就会走代理方法,返回NO不执行手势方法,返回YES执行手势方法,图中的代码表示:当手指点击图片的左边时手势有反应,当点击图片的右边时,手势不做反应
拓展2:可以设置多个手势一起为一个图片做处理,设置代理
步骤:
1、如:tap.delegate = self;
2、如:
![](https://images2015.cnblogs.com/blog/890519/201602/890519-20160217010950251-1537913019.png)
手势识别器:
![](https://images2015.cnblogs.com/blog/890519/201602/890519-20160217011043064-1686373829.png)