博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
我的iOS学习历程 - UITouch(触摸反应)
阅读量:5262 次
发布时间:2019-06-14

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

平常我们用手机的时候,手机是怎么通过我们点击来做出相对应的反应呢,这篇就来介绍触摸反应:

在UITouch最重要的三个方法就是:
1.touchesBegan(触摸开始)

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {    //  UITouch 保存手指信息(触摸的点)    UITouch *touch = [touches anyObject]; //  了解一下touch信息    /*       
phase: Began tap count: 1 window:
; layer =
> view:
> location in window: {140, 126} (当前触摸的点相对于window的坐标) previous location in window: {140, 126} (保存触摸的上一个点相对于window坐标) location in view: {40, 26} (当前触摸的点相对于view的坐标) previous location in view: {40, 26} (保存触摸的上一个点相对于view的坐标) */ // 取出当前触摸的点 // 返回一个当前触摸的点 相对于传进去的参数view CGPoint p1 = [touch locationInView:self]; // 返回当前点的上一个点 相对于传进去的参数 CGPoint p2 = [touch previousLocationInView:self];}

2.touchesMoved(触摸移动)

比如我们想移动一个view且移动的时候改变他的颜色

UITouch *touch = [touches anyObject];    //  取出当前点    //  取出当前点的上一个点    //  计算X轴偏移量    //  计算Y轴偏移量    //  改变视图原来的终点    // 返回当前点的上一个点 相对于传进去的参数    CGPoint p2 = [touch previousLocationInView:self];    //  返回一个当前触摸的点 相对于传进去的参数view    CGPoint p1 = [touch locationInView:self];    self.center = CGPointMake(self.center.x + p1.x - p2.x, self.center.y + p1.y - p2.y);    //  随机变颜色    //  [0 - 255] 三原色填0~1的小数(arc4random()%256/255.0)    self.backgroundColor = [UIColor colorWithRed:arc4random()%256/255.0 green:arc4random()%256/255.0 blue:arc4random()%256/255.0 alpha:1];    //  三原色加透明度

3.touchesEnded 触摸停止

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {}

4.touchesCancelled触摸中断

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
触摸被中断 例如触摸中来电话,小退出 可以触发中断这个方法
}

而平常我们的摇一摇屏幕手机就接收命令来做出对应动作的是哪个命令呢?

1.motionBegan 屏幕晃动的开始

- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event {}

2.motionEnded 晃动结束

一般都是晃动结束执行指令,如果你想在什么时候执行指令就写在哪个方法里

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {//  晃动结束跳转界面    SecondViewController *secondVC = [[SecondViewController alloc] init];    //  跳转    [self presentViewController:secondVC animated:YES completion:nil];    [secondVC release];}

3.motionCancelled 晃动中断

- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event{}

我们的手机晃动,触摸接收指令是有一个顺序的,这个顺序就是我们的响应者链:

响应者链 分为两个过程
1.查询过程
当你点击屏幕,先定位到应用程序 -> window -> 控制器 -> self.view -> view上的子视图一一查找 -> 定位到被点击的子视图 查询过程结束
2.响应过程
首先看本视图能不能处理事件(实现了touchBegan等方法 就叫做可以处理事件) -> 父视图 ->
一层一层往下看能不能处理,知道window,如果都不能处理,改次点击时间被遗弃 (无效点击)
注意:
默认关闭交互的控件:UILabel UIImageView
如果需要打开交互:
可以写一个,YES为关闭,除了以上两个其余默认是开启的

view.userInteractionEnabled = NO;

转载于:https://www.cnblogs.com/888yf/p/4992733.html

你可能感兴趣的文章
Androidstudio创建项目jdk版本问题
查看>>
《般若波罗蜜多心经》全文及解释
查看>>
数字类型内置方法
查看>>
[转载]使用Openfiler构建ESXI网络共享存储iSCSI
查看>>
Android基于mAppWidget实现手绘地图(十四)–在一个应用中使用多个地图
查看>>
iOS开发核心动画之粒子效果
查看>>
实验1 查看CPU和内存,用机器指令和汇编指令编程
查看>>
Beta 冲刺(1/7)
查看>>
算法之经典排序-冒泡排序(bubble sort)
查看>>
python之Django实现商城从0到1
查看>>
利用CSS3中的clac()实现按照屏幕分辨率自适应宽度
查看>>
stm32单片机时钟中断的配置
查看>>
linq查询结果转换为指定字段类型的list集合
查看>>
verilog PLI 实例
查看>>
JavaScript_判断浏览器种类IE、FF、Opera、Safari、chrome及版本
查看>>
PAT 1015. Reversible Primes
查看>>
simulink模型与1ms和10ms等不同速率的处理
查看>>
c++ int to string 实现
查看>>
17.cat
查看>>
ITE3101 Introduction to Programming
查看>>