美文网首页面试题
IOS触摸事件是如何从屏幕转移到APP内的?

IOS触摸事件是如何从屏幕转移到APP内的?

作者: 暴躁的小豆子 | 来源:发表于2020-06-11 16:08 被阅读0次

1.手指触摸屏幕,屏幕感到触摸产生事件交给IOKit
2.IOKit会把事件包装成IOHIdEvent,经由mach_port交给SpringBoad

    mach_port 进程端口,各进程通信都是靠它
   SpringBoad 是系统进程,也可以说是系统界面进程,处理和接受触摸事件
    

3.SpingBoad进程接收到触摸事件,触发了主线程runloop的Source1事件回调

/*
 SpingBoad进程接受到触摸事件的时候,会分析触摸事件发生的时候 用户是在屏幕上界面翻 页还是在某app内,如果是前者会唤起SpingBoad本身主线程的runloop的Source0事件回调,将事件交由桌面系统去消耗,如果是后者,触摸事件通过IPC传递给前台APP进程,接下来的事情便是APP内部对于触摸事件的响应了
*/

这里说一下Source1根Source0

简单点说 Source1就是系统干的事 Source0就是我们干的事
正经说 Source1基本就是系统事件,Source0基本就是应用层事件

  • Source1 :基于mach_Port的,来自系统内核或者其他进程的事件,可以主动唤醒休眠中的RunLoop(开发过程中我们一般不主动使用IPC《进程间通信》)。mach_port大家就理解成进程间相互发送消息的一种机制就好。
  • Source0 :非基于Port的 处理事件,什么叫非基于Port的呢?就是说你这个消息不是其他进程或者内核直接发送给你的。

上面的例子就是对runloop的Source1根Source0回调,如果没有事件,也没有timer,则runloop就会睡眠, 如果有,则runloop就会被唤醒,然后跑一圈。

相关文章

  • 深入理解触摸响应链

    背景 这里有一个问题,触摸事件是如何从屏幕转移到APP内的? 先说结论:触摸事件从触屏产生后,由IOKit将触摸事...

  • iOS触摸事件全家桶

    好奇触摸事件是如何从屏幕转移到APP内的?困惑于Cell怎么突然不能点击了?纠结于如何实现这个奇葩响应需求?亦或是...

  • (零)前言

    好奇触摸事件是如何从屏幕转移到APP内的?困惑于Cell怎么突然不能点击了?纠结于如何实现这个奇葩响应需求?亦或是...

  • IOS触摸事件是如何从屏幕转移到APP内的?

    1.手指触摸屏幕,屏幕感到触摸产生事件交给IOKit2.IOKit会把事件包装成IOHIdEvent,经由mach...

  • iOS事件传递及响应者链条

    这里, 将带你解析"从你的手指触摸屏幕, 到App作出响应"这段历程中究竟发生了什么事. 什么是事件? iOS中事...

  • iOS 中的事件响应与处理

    前言 在事件(如触摸屏幕)产生后,系统是如何通知到你的 App,在 App 内部是如何进行传递,最终又是如何确定最...

  • iOS 触摸事件的处理层次及原理

    iOS 事件包括:运动事件、远程控制事件、触摸事件。 其中触摸事件的响应流程是:当手指触摸屏幕时,会产生一个事件,...

  • iOS 触摸事件的探索

    iOS屏幕触摸事件的处理对于APP来说是很重要的,如果我们只了解监听UIControl类的点击事件或者手势事件的话...

  • 《iOS事件触摸与手势》

    iOS事件触摸与手势 一、事件分发处理【由外到内】在iOS中发生触摸后,事件会加到UIApplication事件队...

  • UIButton 常用方法及属性

    IOS UIButton事件UIControlEventTouchDown单点触摸按下事件:用户点触屏幕,或者又有...

网友评论

    本文标题:IOS触摸事件是如何从屏幕转移到APP内的?

    本文链接:https://www.haomeiwen.com/subject/cnubtktx.html