文档章节

iOS事件处理

GSChan
 GSChan
发布于 2016/09/28 12:08
字数 727
阅读 4
收藏 0
iOS

1、事件的产生及传递

       1.1.发生触摸事件后,系统会将事件加入到一个由UIApplication管理的事件队列中,

       1.2.UIApplication会从事件队列中取出最前面的事件,并将事件发放下去以便处理,通常先发送给应用程序的主窗口

       1.3.主窗口会在视图层次结构中选出最合适的试图控件,来处理事件,这也是整个过程的第一步

       1.4.找到合适的视图控件后,就会调用最合适的视图控件的touches方法来处理事件,

2、如何寻找最合适的视图控件?

       2.1.自己能否接受触摸事件

       2.2.触摸点是否在自己身上

       2.3.从后往前遍历所有子控件,重复前两步

       2.4.如果没有最合适的view,那么就自己最适合处理

3、事件的响应

       3.1.找到最合适的view后调用touches方法,系统的默认做法是沿着响应者链条向上传递

       3.1.1.响应者链条

                3.1.1.1.由多个响应者连接而成的链条

               3.1.1.2.能清楚的观察到每个响应者之间的关系,并且可以使一个事件可以被多个对象处理

       3.1.2响应者

               3.1.2.1继承自UIResponder的对象

               3.1.2.2具备处理事件的能力

       3.1.1.如何寻找上一个响应者

               3.1.1.1.当前的view是控制器的view,那么上一个响应者就是控制器

               3.1.1.2.当前的view不是控制器的view,那么上一个响应者就是父控件

   3.2.找到上一个响应者,继续调用上一个响应者的touches方法,以此类推

4.事件传递的完整过程

       4.1.先将事件对象从上往下进行传递,(即父控件传递给子控件)找到最合适的视图控件来处理事件

       4.2.调用最合适的视图控件的touches方法处理事件

       4.3.如果调用了[super touches….];就会将事件顺着响应者链条往上传递,传递给上一个响应者

       4.4.接着就会调用上一个响应者的touches….方法

5.响应者链条的事件传递过程

       5.1.如果view的控制器存在,就传递给控制器,如果view的控制器不存在,就传递给父控件

       5.2.在视图层次的最顶端如果也不能处理事件或消息,那么就将该事件传递给UIWindow对象

       5.3.如果UIWindow对象也不能处理事件或消息,那么就将事件传递给UIApplication

       5.4.如果UIApplication对象也不能处理事件或消息,那么就将事件丢弃

6.不能接收事件的五种方式

       6.1.userInteractionEnabled == NO

       6.2.hidden == YES

       6.3.alpha <= 0.01

       6.4.父控件不能接收事件

       6.5.子控件超出父控件的尺寸

© 著作权归作者所有

上一篇: iOS类的本质
下一篇: iOS多线程
GSChan
粉丝 0
博文 8
码字总数 10691
作品 0
杭州
程序员
私信 提问
关于sdl在ios中输入拼音的问题

做的是ios app,我们现在项目里面用的sdl跨平台,平常开发在windows下,在处理文本输入的时候,英文输入的情况在windows和ios下都没有任何问题,问题出在中文输入上。 在windows下,用拼音输...

hellodudu86
2014/06/28
463
0
2018 iOS 面试题大全(补充完整版)

原文地址:2018 iOS 面试题大全 由于原作者并没有继续更新,这里我转过来继续更新下 这个栏目将持续更新--请iOS的小伙伴关注! 1、iOS 应用导航模式有哪些? 2、iOS 中持久化方式有哪些? 3、...

Theendisthebegi
2018/11/15
0
0
Digium 开源实时音频和视频通信 SDKs

Digium,WebRTC 平台 Respoke 的创造者,宣布开源 Android 和 iOS SDKs,让开发者更容易在移动应用中添加实时音频和视频通信。此外,SDK 支持实时消息通讯,在后台运行或者离线的时候也可以推...

oschina
2015/08/26
5.5K
8
fixed定位元素被安卓、ios键盘顶起的解决办法

问题背景: 当我们在写H5页面时经常会有fixed固定位置的元素存在,例如下图左中的"作业帮一课APP下载框",当我们input输入的时候键盘会弹起并将fixed定位的下载框顶起,如下图右,ios和安卓部分机...

JamesView
2018/07/07
2.2K
0
基于原生的移动跨平台研究和实践

基于原生主要是针对基于webview+h5比较来说的,基于H5的我不想再讨论了,我想尝试的是从UI到功能都是原生,而不是用H5模拟的所谓原生体验。 背景 我们从开发角度来考虑,但凡想从事长远的开发...

voxer
2017/03/26
150
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx学习笔记

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。 web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多...

码农实战
今天
5
0
Spring Security 实战干货:玩转自定义登录

1. 前言 前面的关于 Spring Security 相关的文章只是一个预热。为了接下来更好的实战,如果你错过了请从 Spring Security 实战系列 开始。安全访问的第一步就是认证(Authentication),认证...

码农小胖哥
今天
12
0
JAVA 实现雪花算法生成唯一订单号工具类

import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import java.util.Calendar;/** * Default distributed primary key generator. * * <p> * Use snowflake......

huangkejie
昨天
12
0
PhotoShop 色调:RGB/CMYK 颜色模式

一·、 RGB : 三原色:红绿蓝 1.通道:通道中的红绿蓝通道分别对应的是红绿蓝三种原色(RGB)的显示范围 1.差值模式能模拟三种原色叠加之后的效果 2.添加-颜色曲线:调整图像RGB颜色----R色增强...

东方墨天
昨天
11
1
将博客搬至CSDN

将博客搬至CSDN

算法与编程之美
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部