UITableViewController 上的第一响应者?

First responder on UITableViewController?

有人给我更新了一些旧代码(来自 iOS 5 时代),其中有一大块代码我不太明白:

- (void)viewDidAppear:(BOOL)animated
{
    [self becomeFirstResponder];
}

- (BOOL)canBecomeFirstResponder
{
    return YES;
}

这是 UITableViewController 子类的一部分,它实例化了一堆自定义 UITableViewCell 子类,这些子类都包含 UITextFields(其输入由 UITableViewCell 子类验证和处理,然后通过委托方法传回 UITableViewController) .

AFAIK,像 becomeFirstResponder 和 canBecomeFirstResponder 这样的 UIResponder 东西更多地与用户交互控制小部件(如文本字段和东西)有关,而不是 table 视图控制器。

任何人都可以告诉我这个特定代码在 UITableViewController 上是否有任何用途?还是我可以删除的东西?无论是否存在,应用程序的行为似乎都没有改变。

如果这确实是 UITableViewController 的子类,您根本不需要提到的代码。正如您提到的,第一响应者状态通常由 UI 控件处理。

话虽这么说,但请注意,以防开发人员尝试做一些非常时髦(不干净)的事情,例如强制将 UITableViewController 设置为 firstResponder,然后让另一段代码将请求转发到firstResponser 期望它是 UITableViewController,或者将 NIB 中的一些方法附加到 firstResponder 对象。