首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在iOS应用程序收到点击事件之前,触摸屏幕发生了什么?

在iOS应用程序收到点击事件之前,触摸屏幕发生了以下步骤:

  1. 电容式触摸屏幕感应:iOS设备的屏幕是电容式触摸屏幕,当手指或者触控笔接触屏幕时,屏幕会感应到电荷变化。
  2. 信号传输:感应到电荷变化后,触摸屏幕会将信号传输给设备的触摸屏控制器。
  3. 触摸屏控制器处理:触摸屏控制器会对接收到的信号进行处理,包括解析触摸位置、触摸压力等信息。
  4. 传输给操作系统:处理完毕后,触摸屏控制器会将处理结果传输给iOS操作系统。
  5. 事件派发:iOS操作系统会将触摸事件封装成UIEvent对象,并将其派发给应用程序的事件队列。
  6. 响应链处理:应用程序的事件队列会将触摸事件按照响应链的顺序传递给视图层次结构中的各个UIResponder对象。
  7. 事件处理:UIResponder对象可以对触摸事件进行处理,例如判断点击位置、执行相应的操作等。
  8. 响应者链:如果当前UIResponder对象无法处理该事件,事件会继续传递给下一个响应者对象,直到事件被处理或者到达响应链的末尾。
  9. 应用程序处理:最终,触摸事件会传递给应用程序的特定视图或者控制器进行处理,例如更新UI界面、执行相应的业务逻辑等。

总结起来,iOS应用程序收到点击事件之前,触摸屏幕经历了电容式触摸屏幕感应、信号传输、触摸屏控制器处理、传输给操作系统、事件派发、响应链处理、事件处理、响应者链和应用程序处理等一系列步骤。这些步骤确保了触摸事件能够被准确地传递和处理,从而实现了用户与iOS应用程序的交互。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

史上最详细的iOS事件的传递和响应机制-原理篇

中的事件 iOS中的事件可以分为3大类型: 触摸事件 加速计事件 远程控制事件 这里我们只讨论iOS中的触摸事件。...总结一下 1.点击一个UIView或产生一个触摸事件A,这个触摸事件A会被添加到由UIApplication管理的事件队列中(即,首先接收到事件的是UIApplication)。...详述:1.主窗口接收到应用程序传递过来的事件后,首先判断自己能否接手触摸事件。...4.1.触摸事件处理的整体过程 1>用户点击屏幕后产生的一个触摸事件,经过一系列的传递过程后,会找到最合适的视图控件来处理这个事件2>找到最合适的视图控件后,就会调用控件的touches方法来作具体的事件处理...也不能处理该事件或消息,则将其丢弃 事件处理的整个流程总结:   1.触摸屏幕产生触摸事件后,触摸事件会被添加到由UIApplication管理的事件队列中(即,首先接收到事件的是UIApplication

10.7K70

iOS面试题:事件传递和响应机制

事件的产生 发生触摸事件后,系统会将该事件加入到一个由UIApplication管理的事件队列中,为什么是队列而不是栈?...事件的传递 触摸事件的传递是从父控件传递到子控件 也就是UIApplication->window->寻找处理事件最合适的view 注 意: 如果父控件不能接受触摸事件,那么子控件就不可能接收到触摸事件...事件的响应 4.1 触摸事件处理的整体过程 1 用户点击屏幕后产生的一个触摸事件,经过一系列的传递过程后,会找到最合适的视图控件来处理这个事件 2 找到最合适的视图控件后,就会调用控件的touches方法来作具体的事件处理...4.2 响应者链条 iOS程序中无论是最后面的UIWindow还是最前面的某个按钮,它们的摆放是有前后关系的,一个控件可以放到另一个控件上面或下面,那么用户点击某个控件时是触发上面的控件还是下面的控件呢...总结 事件处理的整个流程总结: 1.触摸屏幕产生触摸事件后,触摸事件会被添加到由UIApplication管理的事件队列中(即,首先接收到事件的是UIApplication)。

1.2K10

iOS-手势UIGestureRecognier详解一. 手势UIGestureRecognier简介二. 手势的抽象类——UIGestureRecognizer三. UIGestureRecogni

手势UIGestureRecognier简介 iOS 3.2之后,苹果推出了手势识别功能(Gesture Recognizer),触摸事件处理方面,大大简化了开发者的开发难度。...@property(nonatomic) BOOL cancelsTouchesInView; //默认为NO ,触摸开始的时候,就会发消息给事件传递链,如果设置为YES,触摸没有被识别失败前...delaysTouchesBgan属性用于控制这个消息的传递时机,默认这个属性为NO,此时触摸开始的时候,就会发消息给事件传递链,如果我们设置为YES,触摸没有被识别失败前,都不会给事件传递链发送消息...pan.delaysTouchesBegan = YES; 因为此时拖拽手势识别失败之前,都不会给时间传递链发送消息,所以就不会在调用touchesMoved触发事件了 而delaysTouchesEnded...点击手势——UITapGestureRecognizer 点击手势十分简单,支持单击和多次点击我们手指触摸屏幕并抬起手指时会进行触发,其中有如下两个属性我们可以进行设置: //设置点击次数,默认为单击

2.5K50

iOS-UITouch事件处理详解1. iOS中的事件基本介绍2.UITouch3.UIEvent4. 事件的产生和传递5. 通过UITouch方法监听View的触摸事件的缺点

1. iOS中的事件基本介绍 iOS中不是任何对象都能处理事件,只有继承了UIResponder的对象才能接收并处理事件。...判断自己是否能接收触摸事件? 判断触摸点是否自己身上?...4.4 触摸事件处理的详细过程(响应者链的传递过程) 用户点击屏幕后产生的一个触摸事件,经过一系列的传递过程后,会找到最合适的视图控件来处理这个事件 找到最合适的视图控件后,就会调用控件的touches...如果控制器不存在,其父视图为上一个响应者,将其传递给它的父视图 视图层次结构的最顶级视图,如果也不能处理收到事件或消息,则其将事件或消息传递给window对象进行处理 如果window对象也不处理,...因此iOS3.2之后我们日常开发中关于触摸事件处理方面一般使用手势识别功能Gesture Recognizer,简化开发难度。

1.6K60

iOS 中的事件响应

事件来由:UITouch 触摸 创建 每个手指每一次触摸屏幕,对应生成一个 UITouch 对象。多个手指先后触摸,系统会根据触摸的位置判断是否更新同一个 UITouch 对象。...利用重写hitTest或者point方法扩大 View 的点击范围。 这种需求一些图标的点击事件上非常常见,类似需求还包括:子 view 超出了父 view 的 bounds 响应事件等。...UIGestureRecognizer 上节我们分析了当只有UIResponder参与事件响应时事件的传递是什么样的,那这节我们看一下当UIGestureRecognizer加入到响应时,事件的传递与响应会发生什么变化...NO 时,触摸事件会正常起作用,会正常收到 touchesEnded 消息。...UIGestureRecognizer 首先收到触摸事件,Hit-Testing 返回的 View 延迟收到; 2.

2.6K11

iOS开发中的手势体系——UIGestureRecognizer分析及其子类的使用

iOS开发中的手势体系——UIGestureRecognizer分析及其子类的使用 一、引言         iOS系统中,手势是进行用户交互的重要方式,通过UIGestureRecognizer类,...关于UIGestureRecognizer类,是对iOS中的事件传递机制面向应用的封装,将手势消息的传递抽象为了对象。...(2) @property(nonatomic) BOOL delaysTouchesBegan; 通过上面的例子,我们知道,一个手势触发之前,是会一并发消息给事件传递链的,delaysTouchesBgan...属性用于控制这个消息的传递时机,默认这个属性为NO,此时触摸开始的时候,就会发消息给事件传递链,如果我们设置为YES,触摸没有被识别失败前,都不会给事件传递链发送消息。...(7_0); 四、点击手势——UITapGestureRecognizer         点击手势十分简单,支持单击和多次点击我们手指触摸屏幕并抬起手指时会进行触发,其中有如下两个属性我们可以进行设置

1.7K20

touch-action导致安卓页面无法滚动

其实就是是否阻止默认事件200ms延迟然后再执行滚动行为,而之前的fastclick就是通过去掉这部分来避免点击延迟的。...什么问题呢?就是ios基本都可以的,但是安卓中的页面滚动都没了。这是为什么呢?这个就要看下touch-action的更官方的触摸说明了。 默认情况下,平移(滚动)和捏手势由浏览器独占处理。...当浏览器开始处理触摸手势时,使用的应用程序Pointer_events将收到一个pointercancel事件。...通过调用禁用浏览器处理手势preventDefault(),但也应该使用触摸动作来确保浏览器调用任何事件侦听器之前知道应用程序的意图。...为什么ios没有受影响呢,我觉得可能是ios默认支持touch事件的原因吧。如果你知道底层的原因或者详细的文档说明,可以告诉我哦。

4.1K00

IOS开发基础系列】UIView专题

ios7里边,主窗口和次窗口是没有区别的。         ios7以前中有区别:哪个是主窗口,后面设置为主窗口会把之前设置的覆盖掉。...如果在没有动画块中调用那么setAnimation类方法将什么都不做。...5.1.1 事件检测原理         每当我们点击了一下iOS设备的屏幕,UIKit就会生成一个事件对象UIEvent,然后会把这个Event分发给当前active的app(官方原文说:Then...iOS中,hit-Testing的作用就是找出这个触摸点下面的View是什么,HitTest会检测这个点击的点是不是发生在这个View上,如果是的话,就会去遍历这个View的subviews,直到找到最小的能够处理事件的...这里注意一下:UIImageView的默认是不接受点击事件的,如果想要实现如上所示效果,需要设置userInteractionEnabled=YES;         说到这里,就有人产生了疑问,如果这么实现的话

50230

iOS 事件体系知识及原理小记

基本知识点: 0 UITouch 当每一个指尖屏幕上触发一次触摸事件时,系统就会生成对应一个UITouch对象,用于记录当前触摸的状态,主要包含运动相位、位置、大小、运动、力度(iOS9)等数据;...当触摸事件发生变化时(指尖移动、压力变化),UITouch对象的相关信息也会跟着更新;每一次更新都是复用之前的UITouch对象,不会重新创建。...UIEvent对象代表着一个事件,有四种类型的事件触摸事件( UIEventTypeTouches)、运动事件( UIEventTypeMotion)、远程控制事件( UIEventTypeRemoteControl...)、物理按键事件( UIEventTypePresses);例如屏幕点击了,系统会创建一个UIEvent,如果UIEvent对象已经存在,那直接复用已有的UIEvent,UIEvent应用中一旦被创建...app的事件队列中; UIApplication会从事件队列中取出最前面的事件进行分发以便处理,通常先发送事件应用程序的主窗口(UIWindow); 主窗口会调用hitTest:withEvent:方法视图

1.2K90

事件分发机制

分别说明: 一:Touch Events 这个是重点,也是需要仔细说的,大家可以先想一下这样的一个过程,你点击一下屏幕,系统怎么找到我们的APP,又是怎样找到我们点击的界面,然后执行了我们的点击事件的...先说说Touch Events大致的执行过程;     点击手机屏幕 ----> UIKit 会生成一个 UIEvent事件,把UIEvent分发给当前活跃着的APP ----> 活跃着的APP被告知有事件发生后...C 的位置: 739006-20160912140718773-1711286254.png     1:点击的位置是 RootView当中,RootView 收到hitTest消息, 先调用RootView...Responder Chain 技术哥 iOS触摸事件处理 史上最详细的iOS事件的传递和响应机制 Motion Events  和  Remote Control Events:     Motion...Events ,传感器加速器这两个东西我就不再说我,以前说屏幕方向的时候写过这两个东西,博客里面也有关于他们的许多的链接,我就直接把那篇博客的链接给出来,有兴趣的可以翻一翻; 屏幕方向该知道的那些事儿

1K80

iOS 小技能: Responder Chain(响应者链)【下篇】

发生触摸事件后,系统会将该事件加入到一个由UIApplication管理的事件队列中 UIApplication会从事件队列中取出最前面的事件,并将事件分发下去以便处理,通常,先发送事件应用程序的主窗口...II 响应者链的事件传递过程 1).如果view的控制器存在,就传递给控制器;如果控制器不存在,则将其传递给它的父视图 2).视图层次结构的最顶级视图,如果也不能处理收到事件或消息,则其将事件或消息传递给...2.1 触摸事件处理的详细过程 用户点击屏幕后产生的一个触摸事件,经过一系列的传递过程后,会找到最合适的视图控件来处理这个事件 找到最合适的视图控件后,就会调用控件的touches方法来作具体的事件处理...3.1 方式一:通过touches方法监听view触摸事件 如果想监听一个view上面的触摸事件之前的做法是: 自定义一个view 实现view的touches方法,方法内部实现具体处理代码 通过...iOS 3.2之后,苹果推出了手势识别功能(Gesture Recognizer),触摸事件处理方面,大大简化了开发者的开发难度。

90030

Native地图与Web融合技术的应用与实践

但从打车业务角度来看,因为打车业务有很多功能入口需要漂浮在地图之上,如起终点卡片、用户中心入口等,这种漂浮功能在技术上并不容易实现,而且还要保证用户触摸动作漂浮元素与地图上发生时,分别派发给各自的事件系统...我们期望的效果是: 点击H5元素时,点击事件会派发给H5 WebView容器处理。 点击地图区域时,点击事件会派发给Native地图组件处理。...如果用户点击屏幕事件想让H5来捕获处理,可以屏幕区域内设置一个逻辑上的矩形区域,如:[0, 0, 50, 50](上图左上角区域),这个数据被称为热区数据。...实现步骤为我们事先在添加Marker时增加一个点击事件(Native地图层实现),Marker被点击时Native地图层会派发此事件事件消息会通过JSBridge技术从Native地图层传到H5层,最后...工具是使用Canvas画布实现的,画布大小与屏幕大小完全重合,借助画布就可以将矩形热区数据屏幕中实时绘制出来。 ?

1.4K10

IOS开发系列——UIView专题之四:事件分发机制篇【整理,部分原创】

4.1.1事件检测原理 每当我们点击了一下iOS设备的屏幕,UIKit就会生成一个事件对象UIEvent,然后会把这个Event分发给当前active的app(官方原文说:Then it places...iOS中,hit-Testing的作用就是找出这个触摸点下面的View是什么,HitTest会检测这个点击的点是不是发生在这个View上,如果是的话,就会去遍历这个View的subviews,直到找到最小的能够处理事件的...的runtime能力,hitTest执行之前,插入了一个方法。...这里注意一下:UIImageView的默认是不接受点击事件的,如果想要实现如上所示效果,需要设置userInteractionEnabled=YES; 说到这里,就有人产生了疑问,如果这么实现的话,那如果本身...一般来说,如果我们需要一个对象去处理一个非触摸事件(摇一摇,RemoteControlEvents,调用系统的复制、粘贴框等),我们要确保该对象是UIResponder子类,如果我们要接收到事件的话,我们需要做两件事情

62510

进入移动Web世界

,由于有多重手势操作替代了鼠标操作,因此,为了判断出是点击、双击、触摸移动或者别的手势,iOS系统判断中加了一个300毫秒的延迟:第一次出发事件300毫秒内再次出发,例如点击,就会被判断为双击。...那么为了统一规范,后来Android系统中也加入了此判定。这就是著名的移动端300ms延迟问题。那么如何解决这个问题呢?tap事件处理。什么是tap事件?...但是如果在蒙层下面同样有点击事件,那么我们点击蒙层关闭后,也会触发到下面的事件。...触摸事件 事件 触发情况 备注 touchstart 手指触摸屏幕触发 已有手指放在屏幕上则不触发 touchmove 手指在屏幕上滑动 连续触发 touchend 手指离开屏幕时触发 / touchcancel...pageY:触摸目标页面中的纵坐标(含滚动) screenX:触摸目标屏幕中的横坐标 screenY:触摸目标屏幕中的纵坐标 target:触摸的DOM节点的目标 d.

1K20

移动端app开发问题及理解

onscroll 元素滚动条被滚动时 移动端事件有 click 单击事件 类似于pc端click,移动端中,连续click触发有200ms-300ms的延迟 touch 触摸事件 touchstart...手指触摸屏幕触发 touchmove 手指在屏幕上移动触发 touchend 手指离开屏幕触发 touchcancel 可由系统进行的触发,比如手指触摸屏幕时,突然alert了,或者系统中其他打断了...touch行为可触发 tap触碰类事件 一般用于代替click事件 tap 手指碰一下屏幕触发 longTap 手指长按屏幕触发 singleTap 手指碰一下屏幕触发 doubleTap 手指双击屏幕触发...stack size exceeded 超出最大调用堆栈大小 后来搜索发现,confirm触发机制是:加载页面会触发,点击按钮打开模态框触发,点击确定触发,点击取消触发。...iPhone的UIWebView(iOS2.0-12.0 ),WKWebView(iOS8.0+,macOS10.10+),Android的WebView WebView可以理解为手机应用中运行和展示网页的界面和接口

3.8K10

APP测试之Monkey压力测试(一)

所以Monkey测试,顾名思义也就像猴子一样软件上乱敲按键,猴子什么都不懂,就爱捣乱。...,Monkey将停止并报错; (3)如果应用程序生了应用程序不响应(application not responding)的错误,Monkey将会停止并报错; 按照选定的不同级别的反馈信息,Monkey...(三)Monkey命令详解 关于环境,我们已经之前搭建好了,还没搭建好的小可爱请参照:速看,APP测试之ADB最全指南, 根据文章介绍下载对应工具并完成工具安装,熟悉操作环境。...(Monkey事件序列中,该类事件数目占总事件数目的百分比),--pct-touch {+百分比}用于调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置)。...,有时还伴随有点击)。

1.8K21

View 事件分发机制,看这一篇就够了

目录大概如下: View 事件分发机制简介 View 常见滑动冲突解决 View 双击,多击事件是怎么实现的 手势识别 小结 View 事件分发机制简介 View 触摸事件 对于屏幕点击,滑动,抬起等一系的动作...代码逻辑上是:上层判断之前交给ChildView的事件处理权需要收回来了,便会做事件的拦截处理,拦截时给ChildView一个ACTION_CANCEL事件 几个主要方法 我们知道,View 的事件分发机制主要涉及到以下几个方法...,所以就产生了滑动冲突。...我们知道当我们触摸屏幕的时候,会产生很多事件,比如 down,move,up, fling 事件等等。...,开发当中,有时候为了减少一些触摸事件的冲突,经常这样写。

67340

Android面试老生常谈的 View 事件分发机制,看这一篇就够了!

目录大概如下: View 事件分发机制简介 View 常见滑动冲突解决 View 双击,多击事件是怎么实现的 手势识别 小结 View 事件分发机制简介 View 触摸事件 对于屏幕点击,滑动,抬起等一系的动作...代码逻辑上是:上层判断之前交给ChildView的事件处理权需要收回来了,便会做事件的拦截处理,拦截时给ChildView一个ACTION_CANCEL事件 几个主要方法 我们知道,View 的事件分发机制主要涉及到以下几个方法...解决思路 看了上面三种情况,我们知道他们的共同特点是父View 和子View都想争着响应我们的触摸事件,但遗憾的是我们的触摸事件 同一时刻只能被某一个View或者ViewGroup拦截消费,所以就产生了滑动冲突...我们知道当我们触摸屏幕的时候,会产生很多事件,比如 down,move,up, fling 事件等等。...,开发当中,有时候为了减少一些触摸事件的冲突,经常这样写。

62920
领券