UI进阶--响应者链条

响应者:继承了UIResponder的对象就是响应者

响应者链条:
1、由多个响应者对象连接起来的链条叫做响应者链条
2、什么是上一个响应者?
  2.1、如果当前这个view是控制器的view,控制器就是上一个响应者
  2.2、如果当前这个view不是控制器的view,那么父控件就是上一个响应者
3、利用响应者链条可以让多个控件处理同一个 "触摸事件"
  3.1、在最后适合的控件里调用super的touchesBegan方法,这样就将事件传给上一个响应,上一个响应者也可以处理事件了

响应者链条,总的来说是:
  1.它是一种事件处理机制,由多个响应者对象连接起来的链条,使得事件可以沿着这些对象进行传递。
  2.如果一个响应者对象不能处理某个事件或动作消息,则将该事件消息重新发送给链中的上一个响应者。
  3.消息沿着响应者链向上、向更高级别的对象传递,直到最终被处理。

事件的完整处理过程:

①.先将事件对象由上往下传递(由父控制传给子控件),找到最适合的控件来处理

②.调用最合适的控件的touches...方法

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

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

⑤.如果没有找到最适合的控件来处理事件,则将事件传回来窗口,窗口不处理事件,将事件传给UIApplication

⑥.如果Applicatoin不能处理事件,则将其丢弃

响应者链条示意图:

时间: 2024-10-29 10:45:53

UI进阶--响应者链条的相关文章

iOS开发UI篇—响应者链条

iOS开发UI篇—响应者链条 一.触摸事件处理的详细过程 用户点击屏幕后产生的一个触摸事件,经过一些列的传递过程后,会找到最合适的视图控件来处理这个事件 找到最合适的视图控件后,就会调用控件的touches方法来作具体的事件处理 touchesBegan… touchesMoved… touchedEnded… 这些touches方法的默认做法是将事件顺着响应者链条向上传递,将事件交给上一个响应者进行处理 二.响应过程 一次完整的触摸事件的传递响应的过程 UIAppliction --> UIW

UI开发--响应者链条

一.触摸事件处理的详细过程 用户点击屏幕后产生的一个触摸事件,经过一些列的传递过程后,会找到最合适的视图控件来处理这个事件 找到最合适的视图控件后,就会调用控件的touches方法来作具体的事件处理 touchesBegan… touchesMoved… touchedEnded… 这些touches方法的默认做法是将事件顺着响应者链条向上传递,将事件交给上一个响应者进行处理 二.响应过程 一次完整的触摸事件的传递响应的过程 UIAppliction --> UIWiondw -->递归找到最

IOS开发——UI进阶篇(十二)事件处理,触摸事件,UITouch,UIEvent,响应者链条,手势识别

触摸事件 在用户使用app过程中,会产生各种各样的事件 一.iOS中的事件可以分为3大类型 触摸事件加速计事件远程控制事件 响应者对象在iOS中不是任何对象都能处理事件,只有继承了UIResponder的对象才能接收并处理事件.我们称之为“响应者对象” UIApplication.UIViewController.UIView都继承自UIResponder,因此它们都是响应者对象,都能够接收并处理事件 二.UIResponder UIResponder内部提供了以下方法来处理事件触摸事件- (v

UI进阶 即时通讯之XMPP好友列表、添加好友、获取会话内容、简单聊天

这篇博客的代码是直接在上篇博客的基础上增加的,先给出部分代码,最后会给出能实现简单功能的完整代码. UI进阶 即时通讯之XMPP登录.注册 1.好友列表 初始化好友花名册 1 #pragma mark - 管理好友 2 // 获取管理好友的单例对象 3 XMPPRosterCoreDataStorage *rosterStorage = [XMPPRosterCoreDataStorage sharedInstance]; 4 // 用管理好友的单例对象初始化Roster花名册 5 // 好友操

iOS中的事件传递和响应者链条

iOS中的事件传递和响应者链条 本文转自:http://www.linuxidc.com/Linux/2015-08/121270.htm 首先我们来看看ios中事件的产生和传递过程 1.发生触摸事件后,系统会将事件加入到一个由UIApplication管理的队列事件中来 2.UIApplication会从事件队列中取出最前面的事件,并将事件分发下去以便处理,通常会发发送事件给应用程序的主窗口 3.主窗口会在视图层次结构中找到一个最合适的视图来处理触摸事件 4.找到合适的视图控件后,就会调用视图

响应者链条

响应时间的完整处理过程: 1.先讲事件对象由上往下传递(由父控件传递给子控件),找到最合适的控件来处理这个事件 2.调用最合适控件的touches....方法 3.如果调用了[super touches...];就会将事件顺着响应者链条往上传递,传递给上一个响应者 4.接着就会调用上一个响应者touches...方法 什么事响应者链条? 1.响应者链条是由多个响应者对象链接起来的链条(什么是响应者对象:能处理事件的对象) 2.利用响应者链条,能让多个控件处理同一个触摸事件 3.怎么利用链条往上传

简析响应者链条

谈到响应者链条,首先要有触摸事件和响应者.触摸事件就不解释了,那么什么是响应者? 一.响应者 在iOS中不是任何对象都能处理事件,只有继承了UIResponder的对象才能接收并处理事件.我们称之为“响应者对象”.例如:UIApplication.UIViewController.UIView都继承自UIResponder,因此它们都是响应者对象,都能够接收并处理事件. 二.事件的传递 有了触摸事件和响应者,就会产生响应者链条.发生触摸事件后,系统会将该事件加入到一个由UIApplication

事件处理以及响应者链条

在ios中,事件UIEvent类来表示,当一个事件发生时,系统会搜集的相关事件信息,创建一个UIEvent对象,最后将该事件转发给应用程序对象(UIApplication).日常生活中,主要有三种类型的事件:触摸事件,加速计事件以及远程遥控事件.下面是官方的一张图片: 当用户通过以上方式触发一个事件时,会将相应的事件对象添加到UIApplication的事件队列中.UIApplication会循环的从队列中拿出第一个事件来处理.首先将该事件分发给UIApplication 的主窗口对象(KeyW

响应者链条(事件的传递)(复习笔记)

1.如果父控件不能接收触摸事件,那么子控件就不可能接收到触摸事件. 2.在以下几种情况下,控件是不能接收触摸事件 1.不接收用户交换  userInteractionEnable= NO; 2.隐藏 hiden = YES; 3.透明 alpha = 0.0 ~ 0.01; 提示:UIImageView的userInteractionEnable默认为NO,因此UIImageView以及他的子控件默认不接收触摸事件. 3.事件的完整处理过程 1.先将事件对象由上往下传递(由父控件传递给子控件),