如果 UITextField 是在 UITableViewCell 中以编程方式创建的,如何退出第一响应者?

How to resign first responder if UITextField is programmatically created inside a UITableViewCell?

我创建了一个自定义 tableViewCell,其中仅包含一个 textField 用于数据输入,就像在表单中一样。当用户点击完成时我将如何移动到表单中的下一个 cell/textField 并在表单完成时最终退出键盘?

问题更新:

我已经为我的自定义 tableViewCell 创建了一个带有 class 的单独文件。该单元格仅包含一个 textfield ,它被限制为适合整个单元格。我当前的解决方案是将每个单元格分配为 textField 代表并辞去每个单元格的第一响应者。

在我的 tableViewController 上,我将上述自定义单元格出队 4 次以获得简单的表单。但是我不确定如何访问 tableViewCell 文件中的 textField 以在用户点击完成时跳转到下一个 textField 或检查所有字段是否具有有效条目以保存信息。

我将如何处理您正在尝试做的事情的一个非常简短的版本是:

  1. 存储单元格中当前显示的 UITextField 个数组。
  2. 将文本字段附加到 func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath)
  3. 中的数组
  4. 删除 func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath)
  5. 中的文本字段
  6. 保留对 UITextField 用户交互的引用(通过 UITextFieldDelegate
  7. 每当用户按下 'Done' 在第 4 步设置的 UITextField 上调用 resignFirstResponder()
  8. 在可见数组 UITextField 中搜索已关闭文本字段的索引。
  9. 增加索引并在该索引处的 UITextField 上调用 beginFirstResponder()

我也遇到了同样的问题。因此,为了遇到这个问题,我在 tableView 的 Attribute Inspecter 中选择了选项 - Keyboard > Dismiss on Drag

(这将在您滚动 table 视图时退出文本字段)

您可以在 table view/tableview 个单元格上使用点击手势来退出回复。