触摸手势
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了触摸手势相关的知识,希望对你有一定的参考价值。
触摸:
1、创建一个视图,重写TA在不同阶段的触发的方法,方法如下:
![技术分享](file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/C4CB990A-BCC9-4523-B3AA-6AFFD9603D65.png)
![技术分享](https://image.cha138.com/20200614/f1af4264f7c8484a8a161b0ce5c7cc5f.jpg)
2、当重写触碰移动方法,想要实现一个视图随着自己的鼠标移动的方法时
获取触摸在屏幕上的手指对象:
UITouch *tou = [touches anyObject];
(1)要获取手指移动之前的位置
之前的位置 = [tou previousLocationInView:self]
(2)要获取手指移动之后的位置
之后的位置 = [tou locationInView];
(3)视图现在的位置的X值就是: 自己原来的位置 + (手指移动之后的x的值 - 手指移动之前x的值)
(4)视图现在位置的y值同理
代码如下:
![技术分享](file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/D76C4C84-0AC4-449E-832D-1EB93CD5A155.png)
![技术分享](https://image.cha138.com/20200614/e96d207142f048ce816818ee0abc43b0.jpg)
拓展:视图中有一个属性是userInteractionEnabled,这个属性的默认值是YES,如果把TA的这个属性设置为NO,它将不能触发事件
手势:
创建手势的步骤:
1、创建手势识别器对象、如创建一个敲击手势对象
手势类型 *手势名 =[ [手势类型 alloc] init];如:
![技术分享](file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/712D2AF7-65FE-4F28-95BE-02A9B44C1279.png)
![技术分享](https://image.cha138.com/20200614/a173e22e370840b3a47e24b3c55f3159.jpg)
2、可以设置敲击手势要连续敲击几次,手势识别才会成功,如:
![技术分享](file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/D8ECA6F1-ADEA-4C53-B98A-0221B3479525.png)
![技术分享](https://image.cha138.com/20200614/30fd8284a63445e7998db6babb3f5871.jpg)
3、可以设置要几根手指同时敲击,手势才会识别成功
![技术分享](file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/005669F3-AC9E-4DDF-9B50-D2B8248DFDA4.png)
![技术分享](https://image.cha138.com/20200614/0370002b2f7142fab4a73222f2286d5a.jpg)
4、为对象添加手势识别器对象
![技术分享](file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/4800E8BC-A5AE-4884-8D56-CD8A3693575D.png)
![技术分享](https://image.cha138.com/20200614/b133e732160d4eb3a14424d49b06555a.jpg)
5、为手势添加监听方法(可以在tapView1方法中打印一句话)
![技术分享](file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/B4C239EC-314C-4A34-857E-A8F2BD51AD94.png)
![技术分享](https://image.cha138.com/20200614/3a9b4119f7944640bc06f03e058b6597.jpg)
6、记得打开用户交互
![技术分享](file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/24ED8DBB-925E-45A1-9281-865A22DD3727.png)
![技术分享](https://image.cha138.com/20200614/65751b3da452426c931d35ea7a6f35c2.jpg)
注:清扫的属性:direction,设置清扫的方向:
![技术分享](file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/27980F24-F984-4B77-B429-167473C0950A.png)
![技术分享](https://image.cha138.com/20200614/84ef90df21024467b326b7d4187ec319.jpg)
长按的属性:
![技术分享](file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/2F736DED-954F-4DA5-9DBF-230834817BD0.png)
![技术分享](https://image.cha138.com/20200614/0be7277f341548c880447020ed7be2ee.jpg)
当手势是旋转的时候:方法内部的代码如下:
![技术分享](file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/E2973824-2976-4864-B32C-EE716BA86567.png)
![技术分享](https://image.cha138.com/20200614/c11f06ec017f4ec49c4fe7928d47fd26.jpg)
当手势是缩放的时候,方法内部的代码如下:
![技术分享](file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/49142652-86A3-4115-B653-47A0493B8EB4.png)
![技术分享](https://image.cha138.com/20200614/a506a7537beb4e838b1bdca1e13025c7.jpg)
当手势是平移的时候,方法内部的代码如下:
![技术分享](file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/B983D756-F9DF-4550-A77C-A5C7166FF6DC.png)
![技术分享](https://image.cha138.com/20200614/7b445e0262ec49e1969bde9f0ce3cd36.jpg)
拓展1:手势是有代理对象的,可以为手势添加代理,可以在代理中阻断手势的运行等
步骤:
1、如:tap.delegate = self;
2、如:
![技术分享](file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/EB1422A8-2B45-40D7-A28E-06E09646C2F2.png)
![技术分享](https://image.cha138.com/20200614/d840638e81ae4485921b1fa129d3ef26.jpg)
当有敲击手势的时候,就会走代理方法,返回NO不执行手势方法,返回YES执行手势方法,图中的代码表示:当手指点击图片的左边时手势有反应,当点击图片的右边时,手势不做反应
拓展2:可以设置多个手势一起为一个图片做处理,设置代理
步骤:
1、如:tap.delegate = self;
2、如:
![技术分享](file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/AABC886D-CF23-4E67-A4ED-E716BDE2F438.png)
![技术分享](https://image.cha138.com/20200614/ebcb0b7de1f54c4b92d799c35b6d9698.jpg)
手势识别器:
![技术分享](file:///C:/Users/ADMINI~1/AppData/Local/Temp/enhtmlclip/DBA3C35C-2D60-450B-BA87-93DC216571AD.png)
![技术分享](https://image.cha138.com/20200614/e849ec3d704a40a6b4ba46a781243fc8.jpg)
以上是关于触摸手势的主要内容,如果未能解决你的问题,请参考以下文章