美文网首页
iOS事件响应者链、

iOS事件响应者链、

作者: 晴天ccc | 来源:发表于2018-05-17 14:54 被阅读0次

一、知识点简介、

1.0 iOS中的事件可以分为三大类型:

1、触屏事件(例如点击按钮、通过手势缩放图片、拖动上下滚动页面等)

2、加速计事件(摇一摇红白,旋转设备控制赛车,指南针等)

3、远程控制事件(耳机线控,外接手柄,遥控器等)


1.1 响应者对象UIResponder

用户对手机进行操作就会产生事件,那么就要有程序去响应。在iOS中不是任何对象都能处理事件,只有继承了UIResponder的对象才能接收并处理事件。我们称之为:响应者对象。

NS_CLASS_AVAILABLE_IOS(2_0)  @interface  UIApplication :UIResponder

NS_CLASS_AVAILABLE_IOS(2_0)  @interface  UIView:UIResponder

NS_CLASS_AVAILABLE_IOS(2_0)  @interface UIViewController:UIResponder

@interface    CALayer  :NSObject <NSSecureCoding,CAMediaTiming>

我们可以看出UIApplication、UIView、UIViewController都是继承自UIResponder类,可以响应和处理事件。CALayer不是UIResponder的子类,无法处理事件、

1.2 UIEvent

一个UIEvent对象描述一次用户交互行为。例如:用户点击手机屏幕,摇晃手机等。iOS系统都会收到UIEvent事件。

1.3 UITouch

当用户用手机点击屏幕时,会产生UITtouch对象。

该UITouch对象会记录手指的运动信息,比如:位置,时间,阶段等。手指在屏幕的时候系统会更新同一个UITouch对象,如果离开屏幕,该对象会被销毁。

一个UITouch对象对应了一根手指,在事件中可以根据NSSet中UITouch对象的数量得出是单指还是多指等。


【二】事件的产生和传递

用户触摸屏幕,会产生一个触摸事件,操作系统会将该触摸事件加入到UIApplication管理事件队列(串行,先进先出)。

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

主窗口会在视图层次结构中找到一个最合适的视图来处理触摸事件。

附:iOS程序生命周期详解、

1.当iOS程序中发生触摸事件后,系统会将事件加入到UIApplication管理的一个任务队列中

2.UIApplication将处于任务队列最前端的事件向下分发。即UIWindow。

3.UIWindow将事件向下分发,即UIView。

4.UIView首先看自己是否能处理事件,触摸点是否在自己身上。如果能,那么继续寻找子视图。

5.遍历子控件,重复以上两步。

6.如果没有找到,那么自己就是事件处理者。

7.如果自己不能处理,那么不做任何处理。

这一寻找的过程,被称作事件的响应链。


2.2 补充

如果当前这个view是控制器的view,则控制器是父控件,如果view不是属于控制器的view,则父控件就是上一个响应者。

判断UIView不能接受触摸事件的三种情况:

1、不接受用户交互 userInteractionEnabled = NO;

2、隐藏 hidden = YES;

3、alpha = 0.0-0.1

【三】探究

例如,不想让蓝色的view接收事件,那么可以设置蓝色的view的userInteractionEnabled = NO;那么点击黄色的view或者蓝色的view所产生的事件,最终会由橙色的view处理,橙色的view就会成为最合适的view。

所以,不管视图能不能处理事件,只要点击了视图就都会产生事件,关键在于该事件最终是由谁来处理!

相关文章

  • iOS 响应链

    iOS开发 - 事件传递响应链iOS 响应者链,事件的传递事件传递之响应链Cocoa Touch事件处理流程--响...

  • 二、事件传递链和响应者链

    iOS触摸事件详解iOS开发-事件传递响应链 响应者链 UIResponser包括了各种Touch message...

  • iOS UI事件传递与响应者链

    iOS UI事件传递与响应者链 响应者链 响应者对象:继承自UIResponder的对象称之为响应者对象。UIAp...

  • ios响应者链

    iOS 响应者链 字数418 阅读41 评论0 喜欢3 响应者链 响应者链是一个响应者的连接序列,事件或者动作消息...

  • iOS 响应者链

    一个目前最新最全的分析 iOS事件处理,看我就够了~ 对响应者链机制的图文分析 深入浅出iOS事件机制 对响应者链...

  • 转载:响应者链工作原理

    响应者链 响应者链是由一个一个响应者组成的长链;响应者链定义了iOS中触摸事件的交互规则;如果hit-test检测...

  • 事件的分发和传递

    响应者: 在iOS中,响应者为能响应事件的UIResponder子类对象,如UIButton、UIView等。 响...

  • iOS基础篇-事件处理

    1、首先需要理解iOS事件处理机制 理解事件处理、响应者、响应者链概念https://developer.appl...

  • iOS响应者链

    参考好文 iOS开发-事件传递响应链,用运行时分析 iOS事件传递:响应者链[译] http://www.jian...

  • iOS事件的响应者链

    iOS 事件响应者链 1 iOS中的事件 触摸事件 加速计事件 远程控制事件 在iOS中不是任何对象都能处理事件,...

网友评论

      本文标题:iOS事件响应者链、

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