UIResponder 类和第一响应者角色

Posted

技术标签:

【中文标题】UIResponder 类和第一响应者角色【英文标题】:UIResponder class and first responder roles 【发布时间】:2011-11-01 02:04:42 【问题描述】:

我在UIResponder 类参考中读到:

有两种一般类型的事件:触摸事件和运动事件。

主要的触摸事件处理方法是 touchesBegan:withEvent:、touchesMoved:withEvent:、touchesEnded:withEvent: 和 touchesCancelled:withEvent: ...

但另一篇文章,ios 事件处理指南说:

第一响应者是窗口中第一个接收以下类型事件和消息的视图:运动事件、远程控制事件、动作消息、编辑菜单消息

所以我很困惑,第二个注释说响应者只处理四个事件——不包括触摸事件——而第一个注释说响应者处理触摸事件。

请让我知道我的误解。

【问题讨论】:

【参考方案1】:

一次只有一个响应者是第一响应者。此响应者首先查看您引用的四种事件类型。触摸事件总是首先进入被触摸的视图。在您引用的段落之后的几段中对此进行了解释:

当系统传递一个触摸事件时,它首先将它发送到一个 具体看法。对于触摸事件,该视图是由 hitTest:withEvent:;用于“摇晃”运动事件,远程控制 事件、动作消息和编辑菜单消息,该视图是 第一响应者。

【讨论】:

我认为第一句话说响应者是视图,因为视图也是 UIResponder 的子类。所以 touchesBegan:withEvent: 的 UIResponder 只需使用来自 hittest 的 UIView 的结果。我说的对吗?

以上是关于UIResponder 类和第一响应者角色的主要内容,如果未能解决你的问题,请参考以下文章

UIResponder - didBecomeFirstResponder?

:多点触摸与手势检测

响应者的概念

使用第一响应者和第一响应者与目标行动

NSTextfield + NSMenu 和第一响应者

iOS - Xcode 中的文件所有者和第一响应者是啥?