UIResponder详解

2024-06-13 03:08
文章标签 详解 uiresponder

本文主要是介绍UIResponder详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

UIResponder Class Reference

Managing the Responder Chain

[plain]  view plain copy
  1. 1.- (UIResponder *)nextResponder  
返回接收者的下一个相应,如果没有就返回nil

UIResponder类不自动存储和设置下一个响应者,而是默认返回nil。子类必须override这个方法来设置下一个响应者。

UIView实现了这个方法,因为可以返回管理这个UIView的UIViewController或者它的父类;

UIViewController实现了这个方法,返回UIViewController的View的父View;

UIWindow发挥UIApplication对象;

UIApplication返回nil

[plain]  view plain copy
  1. 2.- (BOOL)isFirstResponder  
判断一个对象是否是第一响应者。
[plain]  view plain copy
  1. 3.- (BOOL)canBecomeFirstResponder  
判断一个对象是否可以成为第一响应者。默认返回NO。

如果一个响应对象通过这个方法返回YES,那么它成为了第一响应对象,并且可以接收触摸事件和动作消息。

子类必须overrider这个方法才可以成为第一响应者。

You must not send this message to a view that is not currently attached to the view hierarchy. The result is undefined.

[plain]  view plain copy
  1. 3.- (BOOL)becomeFirstResponder  
如果接收者接受了第一响应者的状态就返回YES,拒绝了这个状态就返回NO。默认返回YES。

子类可以override这个方法来更新状态或者执行一些行为,比如高亮选中项。

一个响应对象只有当前响应者可以放弃第一响应者状态,并且新的响应者可以成为第一响应者,才能成为第一响应对象。

[plain]  view plain copy
  1. 4.- (BOOL)canResignFirstResponder  
如果一个对象可以放弃对象响应者就返回YES。默认返回YES。

[plain]  view plain copy
  1. 5.- (BOOL)resignFirstResponder  
默认实现返回YES,放弃第一响应状态。子类可以override这个方法来更新状态或者执行一些行为,比如取消高亮选中项。

如果返回NO,拒绝放弃第一响应状态。

如果你override这个方法,必须调用父类的实现[super resignFirstResponder].

Managing Input Views

[plain]  view plain copy
  1. 1.@property (readonly, retain) UIView *inputView  
当一个对象变成第一响应者的时候显示的View

This property is typically used to replace the system-supplied keyboard that is presented for UITextField and UITextView objects.

UITextField和UITextView如果设置了inputView那么在becomeFirstResponder时不会显示键盘,而现实自定义的inputView;如果设置了inputAccessoryView那么在becomeFirstResponder时会在键盘的顶端显示自定义的inputAccessoryView。

[plain]  view plain copy
  1. 2.@property (readonly, retain) UIView *inputAccessoryView  

This property is typically used to attach an accessory view to the system-supplied keyboard that is presented for UITextField and UITextView objects.

[plain]  view plain copy
  1. 3.- (void)reloadInputViews  
当对象成为第一响应者的时候更新inputView和accessoryView。

Responding to Touch Events

[plain]  view plain copy
  1. 1.- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event  
通知接收者当一个或多个手指在UIView或UIWindow上点下了。
将消息转发给下一个响应者,将消息发送给父类,不要将消息直接传递给下一个响应者。

如果你override这个方法而没有调用super..,你必须同样override其它响应触摸事件的方法,你要是空实现就好。

默认是不支持多点触摸的,如果想要响应多点触摸,你只要吧UIView的 multipleTouchEnabled 属性设置为YES即可。

[plain]  view plain copy
  1. 2.- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event  
手指移动
[plain]  view plain copy
  1. 3.- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event  
手指抬起
[plain]  view plain copy
  1. 4.- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event  
当收到一个系统干扰需要取消触摸事件时才会调用该方法,这种系统干扰往往会引起应用程序长时间没有响应或者一个View从window上移除了。
当收到touchesCancelled:withEvent:消息的时候需要清除所有通过touchesBegan:withEvent:创建的内容。

Responding to Motion Events

[plain]  view plain copy
  1. 1.- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event  
通知接收者一个动作开始了。
当一个动作开始了和结束了的时候iOS才会通知接收者。it doesn’t report individual shakes. 接收者必须是接收动作事件的第一响应者。
[plain]  view plain copy
  1. 2.- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event  
通知接收者一个动作结束了。
[plain]  view plain copy
  1. 3.- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event  
一个动作被取消了。雷同 - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event

Responding to Remote-Control Events

[plain]  view plain copy
  1. 1.- (void)remoteControlReceivedWithEvent:(UIEvent *)event  
接收到一个远程控制事件。比如耳机控制。
允许传递远程控制事件,必须调用UIApplication的beginReceivingRemoteControlEvents方法;关闭远程控制,调用endReceivingRemoteControlEvents。

Getting the Undo Manager

[plain]  view plain copy
  1. 1.@property(readonly) NSUndoManager *undoManager  
返回在响应链中最近的共享undo manager。
默认的,每个应用程序的window都有一个undo manager:a shared object for managing undo and redo operations.然而,在响应链中任何对象的类都有它们自己的undo manager,

Validating Commands

[plain]  view plain copy
  1. 1.- (BOOL)canPerformAction:(SEL)action withSender:(id)sender  

YES if the the command identified by action should be enabled or NO if it should be disabled. Returning YES means that your class can handle the command in the current context.

这篇关于UIResponder详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1056104

相关文章

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

6.1.数据结构-c/c++堆详解下篇(堆排序,TopK问题)

上篇:6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)-CSDN博客 本章重点 1.使用堆来完成堆排序 2.使用堆解决TopK问题 目录 一.堆排序 1.1 思路 1.2 代码 1.3 简单测试 二.TopK问题 2.1 思路(求最小): 2.2 C语言代码(手写堆) 2.3 C++代码(使用优先级队列 priority_queue)

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

嵌入式Openharmony系统构建与启动详解

大家好,今天主要给大家分享一下,如何构建Openharmony子系统以及系统的启动过程分解。 第一:OpenHarmony系统构建      首先熟悉一下,构建系统是一种自动化处理工具的集合,通过将源代码文件进行一系列处理,最终生成和用户可以使用的目标文件。这里的目标文件包括静态链接库文件、动态链接库文件、可执行文件、脚本文件、配置文件等。      我们在编写hellowor

LabVIEW FIFO详解

在LabVIEW的FPGA开发中,FIFO(先入先出队列)是常用的数据传输机制。通过配置FIFO的属性,工程师可以在FPGA和主机之间,或不同FPGA VIs之间进行高效的数据传输。根据具体需求,FIFO有多种类型与实现方式,包括目标范围内FIFO(Target-Scoped)、DMA FIFO以及点对点流(Peer-to-Peer)。 FIFO类型 **目标范围FIFO(Target-Sc

019、JOptionPane类的常用静态方法详解

目录 JOptionPane类的常用静态方法详解 1. showInputDialog()方法 1.1基本用法 1.2带有默认值的输入框 1.3带有选项的输入对话框 1.4自定义图标的输入对话框 2. showConfirmDialog()方法 2.1基本用法 2.2自定义按钮和图标 2.3带有自定义组件的确认对话框 3. showMessageDialog()方法 3.1

脏页的标记方式详解

脏页的标记方式 一、引言 在数据库系统中,脏页是指那些被修改过但还未写入磁盘的数据页。为了有效地管理这些脏页并确保数据的一致性,数据库需要对脏页进行标记。了解脏页的标记方式对于理解数据库的内部工作机制和优化性能至关重要。 二、脏页产生的过程 当数据库中的数据被修改时,这些修改首先会在内存中的缓冲池(Buffer Pool)中进行。例如,执行一条 UPDATE 语句修改了某一行数据,对应的缓

OmniGlue论文详解(特征匹配)

OmniGlue论文详解(特征匹配) 摘要1. 引言2. 相关工作2.1. 广义局部特征匹配2.2. 稀疏可学习匹配2.3. 半稠密可学习匹配2.4. 与其他图像表示匹配 3. OmniGlue3.1. 模型概述3.2. OmniGlue 细节3.2.1. 特征提取3.2.2. 利用DINOv2构建图形。3.2.3. 信息传播与新的指导3.2.4. 匹配层和损失函数3.2.5. 与Super

web群集--nginx配置文件location匹配符的优先级顺序详解及验证

文章目录 前言优先级顺序优先级顺序(详解)1. 精确匹配(Exact Match)2. 正则表达式匹配(Regex Match)3. 前缀匹配(Prefix Match) 匹配规则的综合应用验证优先级 前言 location的作用 在 NGINX 中,location 指令用于定义如何处理特定的请求 URI。由于网站往往需要不同的处理方式来适应各种请求,NGINX 提供了多种匹