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. 微信公众号开发上传图文素材带有卡片小程序报错:errcode=45166,errmsg = invalid content hint

    微信公众号开发自从支持允许在群发图文中插入小程序,方便了小程序的运营及推广.最近在三方服务开发中,要支持图文素材插入小程序遇到了一个很是棘手的问题.官方给出的插入小程序的示例支持文字.图片.卡片.如下 ...

  2. jeecg问题汇总

    (1)使用代码生成器后记得修改spring扫描配置路径entity,dao,control control在jeecg\src\main\resources\spring-mvc.xml中配置 ent ...

  3. jQuery实现enter键登录

    在登录时,使用快捷键登录时常用的方法,其中 loginReq()方法为请求登录检索的方法 $("#login").click(function(){ loginReq(); }); ...

  4. Python加密模块

    RSA加密 # 生成公钥私钥对象 import rsa pub_key_obj, priv_key_obj = rsa.newkeys(1024) ''' 这里的1024是二进制位数, 也就是说他加密 ...

  5. leetcode-140-单词拆分②*

    题目描述: 第一次提交:超时 O(N**N) class Solution: def wordBreak(self, s: str, wordDict: List[str]) -> List[s ...

  6. 解析Mybatis入门第一天

    MyBatis是一个基于Java的持久层框架,内部对JDBC做了封装,使开发者只需要关注SQL语句,而不用关注JDBC的代码,使开发变得更加的简单. MyBatis通过XML或者注解的方式将要执行的各 ...

  7. Linux service,挂载,定时任务等常用服务

    一.防火墙 防火墙根据配置文件/etc/sysconfig/iptables 来控制本机的“出.入”网络访问行为 其对行为的配置策略有四个策 1. 基础必备技能           查看防火墙状态 s ...

  8. 第k小团+bitset优化——牛客多校第2场D

    模拟bfs,以空团为起点,用堆维护当前最小的团,然后进行加点更新 在加入新点时要注意判重,并且用bitset来加速判断和转移构造 #include<bits/stdc++.h> #incl ...

  9. Delphi 与SQL编程

    Delphi 与SQL编程 SQL语言作为关系数据库管理系统中的一种通用的结构查询语言, 已经被众多的数据库管理系统所采用,如Oracle.Sybase.Informix等数据库管理系统,它们都支持S ...

  10. <转载>深入 理解char * ,char ** ,char a[ ] ,char *a[] 的区别

    C语言中由于指针的灵活性,导致指针能代替数组使用,或者混合使用,这些导致了许多指针和数组的迷惑,因此,刻意再次深入探究了指针和数组这玩意儿,其他类型的数组比较简单,容易混淆的是字符数组和字符指针这两个 ...