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. 笔记-Linux包管理命令

    一.apt, apt-get, dpkg命令 apt-get是一条linux命令,适用于deb包管理式的操作系统,主要用于自动从互联网的软件仓库中搜索.安装.升级.卸载软件或操作系统.使用apt-ge ...

  2. 从零开始搭建系统1.4——MySql安装及配置

    安装环境:CentOS7 64位 ,安装MySQL5.7 1.创建mysql目录 2.在MySQL官网中下载YUM源rpm安装包:http://dev.mysql.com/downloads/repo ...

  3. 随笔记录 重置root密码 2019.8.7

    方法1:进入单用户模式 1.开机进入以下界面选择要启动的系统按e 2.找到星号行在后面添加上init=/bin/sh 3.按住Ctrl+x执行 4.进入单用户模式 5.如果passwd命令失败,可以直 ...

  4. Centos6.5升级安装openssh7.7p1

    Centos6.5升级安装openssh7.7p1  关于OpenSSH漏洞   2016年1月14日OpenSSH发布官方公告称, OpenSSH Client 5.4~7.1 版本中未公开说明的功 ...

  5. 报错 DOMDocument not found

    php -m 查看有没有dom扩展 没有安装扩展 yum install php-dom php 常用扩展有 yum install php-solr php-opcache php-seasLog ...

  6. leetcode-159周赛-5231-删除子文件夹

    题目描述: 自己的提交: class Solution: def removeSubfolders(self, folder: List[str]) -> List[str]: d = {} r ...

  7. Delphi StringGrid常用属性和常用操作

    StringGrid组件用于建立显示字符串的网格,与电子表格相似.它可使表格中的字符串和相关对象操作简单化.StringGrid组件提供了许多可控制网格外观念的属性,以及利用表格的结构响应用户操作的事 ...

  8. Element-UI 的树列表实现单选

    1. Element-UI 的 el-tree 组件当设置了 show-checkbox 属性以后,默认是只能多选的,如果我们想要将其改选为单选,就要进行一些特殊的处理,首先看效果图. 2. 组件代码 ...

  9. tesseract-ocr,tesseract,pytesseract在windows下怎么安装

    废话不多说,直接介绍如何下载安装tesseract-OCR以及pytesseract和PIL资源 文末百度网盘都有Tesseract是一个开源的OCR引擎,能识别100多种语言(中,英,韩,日,德,法 ...

  10. NOIp2018集训test-9-19(am&pm)

    AM 这是一套在长沙考过而且我能记得全部正解的题,然后期望得分300实际得分155. T1 很套路,随便搞(我当年是怎么花大半场时间写T1并且写出现在两倍长的代码的??) //Achen #inclu ...