Responder对象



响应者是一个对象,它可以响应事件并处理它们。所有响应者对象是类的,最终从UIResponder的(
IOS)或NSResponder ( OS X)继承实例。这些类声明一个编程接口,事件处理,并定义为响应一个默认的行为。一个应用程序的可视对象几乎都是反应,例如,窗口,视图和控件和应用程序对象是一个响应者为好。在iOS中,视图控制器(的UIViewController对象)也响应对象。





接收事件,响应者必须实现适当的事件处理方法,在某些情况下,告诉应用程序,它可以成为第一个响应者。



第一响应者接收到某些事件第一

在一个应用程序,由最先收到多种事件的响应者对象被称为第一响应者。它接收键盘事件,移动事件,并采取行动的消息,等等。 (鼠标事件和多点触控事件第一次去是鼠标指针或手指下的视图;这种观点可能会或可能不会是第一个响应者)的第一个响应者通常是在一个应用程序认为最适合于处理窗口的视图一个事件。要接收一个事件,响应者也必须表明其愿意成为第一个响应者,它这样做以不同的方式为每个平台:



/ / OS X

- ( BOOL ) acceptsFirstResponder {return YES ; }

 

/ /iOS

- ( BOOL ) canBecomeFirstResponder {return YES ; }

除了接收事件消息,响应者可以接收没有指定的目标操作的消息。 (动作消息是由如按钮,当用户操纵它们的控件控件发送。




响应链协同启用事件处理

如果第一个响应者不能处理一个事件或动作消息,它将其转发到所谓的响应链连结的系列“下一个响应者”
。在响应链中允许响应者对象传送处理的事件或动作消息在应用程序的其他对象的责任。如果在响应链中的对象不能处理这个事件或动作,它传递消息给链中的下一个响应者。该消息传播链向上,向更高级别的对象,直到它被处理。如果它没有被处理,该应用将其丢弃。

响应者链的iOS (左)和OS X (右)

一个事件的路径。一个事件了响应者链的一般路径开始于一个视图的第一个鼠标指针或手指下的响应或视图。从那里,它进行了视图层次结构的窗口对象,然后到全局应用程序对象。然而,响应者链中的iOS事件增加了一个变化到这个路径:如果视图是由一个视图控制器管理,如果视图不能处理事件,视图控制器成为下一个响应者。



操作消息的路径。采取行动的消息,
OS X和iOS的延长响应链到其他对象。在OS
X中,响应链的操作的消息不同,基于文档的架构,使用窗口控制器( NSWindowController )的应用程序,以及一个应用程序,既不符合这些类别的应用程序。此外,如果在OS
X的应用程序都包含一个重要窗口和一个主窗口,响应链沿着这一个动作消息传播可能涉及两个窗口的视图层次结构。

Responder对象的更多相关文章

  1. 响应链和UIKit框架

    Event Delivery: The Responder Chain When you design your app, it’s likely that you want to respond t ...

  2. FlasActionScript3随学随机

    1.跳转页面代码.下载代码(new URLRequest(下载地址)): var request1:URLRequest=new URLRequest("http://www.baidu.c ...

  3. ioS基础篇(十九)——UIResponder简析

    UIResponder类定义了对象相应和控制事件的接口,他是UIApplication.UIView的超类,这类的实例通常被称为应答对象. 一.Responder对象 在iOS系统中,能够响应并处理事 ...

  4. UIKIT的简介

    // // UIKIT各框架的简介 // IOS笔记 // // Created by 刘威成 on 13/12/14. // Copyright © 2015年 刘威成. All rights re ...

  5. Adobe Scout 使用参考说明

    Adobe Scout 用于优化 Flash 内容,是一款极为强大的工具,因为它能让您看到 Flash Player 幕后正在发生的事情.但是若明白 Flash Player 为什么做这些事情,您看到 ...

  6. 【IOS笔记】Views

    Views Because view objects are the main way your application interacts with the user, they have many ...

  7. UIKit各类概述

    1.UIAcceleration: 被叫做加速事件的一个UIAcceleration类的实例是用来代表即时的三维加速数据.为了接收重力加速度,要注册一个应用应用程序作为一个共享UIAccelerate ...

  8. iOS/iPhone 程序文件目录结构以及启动流程

    要想清晰的理解IOS应用程序的启动过程,毫无疑问需要深入了解一下ios应用程序的文件系统.一个ios应用程序都有一个属于自己沙盒(sandbox),应用沙盒就是文件系统目录,并且与文件系统的其他部分隔 ...

  9. UIResponder学习

    http://blog.csdn.net/jimzhai/article/details/23283515 UIResponder 介绍 UIResponder 这个类定义了很多用来处理响应和时间处理 ...

随机推荐

  1. 从数据库更新模型报错:无法将运行时连接字符串转换为设计时等效项,没有为提供程序“mysql.data.mysqlclient”安装为设计目的启用visual studio以便与数据库进行通信所需要的库

    评论里有同学说:VS2017 Enterprise版本的无效,我现在也是用的vs2017Enterprise版本,数据库也是mysql的,但没遇到过.在此说明一下. 一.环境:VS2015 + EF ...

  2. struts2类型转换1

    概述 从一个 HTML 表单到一个 Action 对象, 类型转换是从字符串到非字符串. HTTP 没有 “类型” 的概念. 每一项表单输入只可能是一个字符串或一个字符串数组. 在服务器端, 必须把 ...

  3. react 使用触摸事件

    react开发支持的事件中,onClick事件,部分标签不支持点击,只能onTouchEnd,但是在移动端,手指触碰到事件绑定元素上,滑动,也会触发该事件,故来share解决办法,有更好的方法,欢迎评 ...

  4. jq-demo-轮播图

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. thinkphp 储存驱动

    存储驱动完成了不同环境下面的文件存取操作,也是ThinkPHP支持分布式和云平台的基础. 默认的存储驱命名空间位于Think\Storage\Driver,每个存储驱动必须继承Think\Storag ...

  6. LUOGU P1501 [国家集训队]Tree II (lct)

    传送门 解题思路 \(lct\),比较模板的一道题,路径加和乘的维护标记与线段树\(2\)差不多,然后剩下就没啥了.但调了我将近一下午.. 代码 #include<iostream> #i ...

  7. Core Data could not fulfill a fault

    做项目的时候在iOS4系统遇到过这样一个crash,console显示的错误信息是"Core Data could not fulfill a fault". 字面意思是什么?&q ...

  8. Visual Studio Code 的简单试用体验

    首先对Visual Studio Code做一个大概的介绍.首先明确一下,这个Visual Studio Code(以下简称 vscode)是一个带GUI的代码编辑器,也就是只能完成简单的代码编辑功能 ...

  9. unity Tilemap

    瓦片地图 创建 生成 创建一个Tile

  10. Centos7.5安装kafka集群

    Tags: kafka Centos7.5安装kafka集群 Centos7.5安装kafka集群 主机环境 软件环境 主机规划 主机安装前准备 安装jdk1.8 安装zookeeper 安装kafk ...