美文网首页
响应者链

响应者链

作者: 小凡凡520 | 来源:发表于2018-09-16 16:46 被阅读4次
UIResponder

在UIKit中,UIApplication、UIView、UIViewController这几个类都是直接继承自UIResponder类。另外SpriteKit中的SKNode也是继承自UIResponder类。因此UIKit中的视图、控件、视图控制器,以及我们自定义的视图及视图控制器都有响应事件的能力。这些对象通常被称为响应对象,或者是响应者(以下我们统一使用响应者)。

响应链

响应链指的的是处理点击事件的链条(在此之前还要经历由主窗口向上遍历找到触摸点最终控件的过程)。通常第一个响应者位于层级最上方、然后是其俯视图以此类推、链条末端为UIApplication对象。

过程:
1、事件产生、寻找最合适的View
      UIApplication -> UIWindow -> 父View -> 子view
2、找到最合适的View、进入响应链进行处理可以参照下面对于nextResponder的解释。如果响应者链上有一个响应者可以处理该事件(实现了touch方法)。则交由他处理、否则最后将被UIApplication丢弃。
管理响应者链

我们可以让一个UIResponder对象参与到响应链中、以便让他响应一些事件(比如手机摇动、弹起键盘)等等。

  • nextResponder
    返回响应者链中的下一个对象、如果没有则返回nil。利用这个特性、我们可以查找UIView的根控制器
  • isFirstResponder
    判定是否为第一响应者
  • canBecomeFirstResponder
    返回视图能否被作为第一响应者
  • becomeFirstResponder
    尝试让对象称为第一响应者。如果他当前已经是则返回YES、反之为NO。
  • resignFirstResponder
    如果已经是第一响应者、调用会返回YES并且取消其第一响应者的位置。否则NO。
响应触摸事件
  • touchesBegan:withEvent:
    一个或多个手指在视图或窗口上触摸
  • touchesMoved:withEvent:
    一个或多个手指在视图或窗口上移动
  • touchesEnded:withEvent:
    一个或多个手指从视图或窗口上抬起
  • touchesCancelled:withEvent:
    当触摸事件被系统事件取消(打断)时
touches参数

保存着跟本次手指触摸相关的信息

1、当用一根手指触摸屏幕时
    会创建一个与手指相关联的UITouch对象。
2、当用两根手指同时触摸屏幕
    则会调用一次touchesBegan方法、创建两个UITouch对象。
3、当不是同时触摸
    调用两次方法,每次的touches参数都只有一个UITouch对象。
UIEvent参数

第一个手指开始触摸屏幕到最后一个手指离开屏幕定义为一个触摸事件

1、UIEvent实际可以包括多个UITouch对象
      有几个手指触碰,就会有几个UITouch对象。
2、UITouch对象包括当前手指触碰的屏幕位置等信息
      一次完整的触摸过程中、只会产生一个事件对象
响应动作事件
  • motionBegan:withEvent:
    动作事件开始
  • motionEnded:withEvent:
    动作事件结束
  • motionCancelled:withEvent:
    动作事件被系统事件打断(参考touch事件)
响应远程控制事件
  • remoteControlReceivedWithEvent:
    远程控制事件来源于一些外部的配件,如耳机等。用户可以通过耳机来控制视频或音频的播放。
管理输入视图

所谓的输入视图、是指当对象为第一响应者时、显示另外一个视图用来处理当前对象的信息输入、如UITextView和UITextField两个对象。

输入视图有两种,一个是inputView,另一个是inputAccessoryView。这两者如图所示:


1552225-958398a0207b4d9f.png

相关文章

  • iOS 响应链

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

  • UIKit之触摸、响应者链

    触摸 响应者链 //响应者链多个响应者组成的链//首先执行检测过程,信息先从UIApplication->Appd...

  • ios响应者链

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

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

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

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

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

  • Swift学习笔记Day0726

    响应者链: 当Application Kit在应用程序中构造对象时,会为每个窗口建立响应者链。响应者链中的基本对象...

  • 基于ResponderChain的事件传递

    ResponderChain对象交互方式本质 响应者链简介 Responder Chain也就是响应链,响应者链是...

  • 响应者链

    1.1 响应者链 当与某控件交互时,该控件将作为"第一响应者 (First Responder)",作为响应者链的...

  • iOS响应者链

    iOS响应者链

  • iOS知识收集

    1. 响应者链 1.1 Cocoa Touch事件处理流程--响应者链 1.2 事件传递之响应链 多线程 http...

网友评论

      本文标题:响应者链

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