【发布时间】:2021-11-26 08:42:46
【问题描述】:
根据苹果的documentation:
当您的应用收到事件时,UIKit 会自动指示该事件 事件到最合适的响应者对象,称为第一个 响应者。
相同的文档解释了如何确定第一响应者:
UIView 的 hitTest:withEvent: 方法遍历视图层次, 寻找包含指定触摸的最深子视图, 它成为触摸事件的第一响应者。
我不明白的是为什么 UIResponder 有一个属性叫做isFirstResponder?以及为什么存在becomeFirstResponder。 第一响应者不应该由 UIKit 根据特定触摸事件的位置动态确定吗?
此外,canBecomeFirstResponder 为 UIView 返回 NO,这显然是不正确的,因为视图确实处理触摸事件。
我认为可以解决这种混淆的唯一方法是,如果所有这些方法都只与抖动、远程控制和编辑菜单类型的事件相关。但是文档并不清楚。
【问题讨论】:
标签: ios uikit first-responder uiresponder