如何正确地将 UITextField 添加到 UITableViewCell

How to properly add UITextField to UITableViewCell

根据我的理解,我正在尝试做的事情应该非常简单,但我似乎遇到了一些麻烦。

我正在尝试将 UITextField 添加到我的 Storyboard 中的 UITableViewCell,但是它只允许我将文本字段作为 UIView 的子项放置,后者放置在 table 视图单元格中。

即:

UITableViewCell
|__UIView
   |__UITextView

我在我的 Swift ViewController 中创建了我的 IBOutlet 并添加了以下函数让键盘在触摸时出现

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {  
    self.nameTextField.becomeFirstResponder()  
} 

虽然我 运行 这样做时,单元格会响应触摸,但就好像文本视图始终隐藏并且永远不会启用或成为 FirstResponder。我假设它在某种程度上与 UIView 有关,但是我一直未能成功将文本视图直接放置在 table 视图单元格中。

如果有人知道我做错了什么,我将不胜感激,

谢谢!

创建一个自定义的 UITableView 单元格作为 xib,并为此制作一个相应的 .swift 文件。向单元格添加一个 textField,并在自定义 .swift class 中为该 textField 创建一个 IBOutlet。确保在此 xib 中设置了约束。

在您的 ViewController .swift class 中,将 func tableView(cellForRowAtIndexPath) return 设为您的自定义单元格。

您不必设置 firstResponder,因为键盘会默认出现。除非您的单元格基本上只是一个文本字段,否则让 didSelectRowAtIndexPath 始终调出键盘似乎并不明智。如果由于某种原因单元格总是采取触摸操作,则使用 didSelectRowAtIndexPath,但使用

tableView.cellForRowAtIndexPath(indexPath).textField.becomeFirstResponder()

将 textField 委托设置为自定义单元格并将其添加到 CustomTableViewCell.swift 以在按下 return 键时关闭键盘:

func textFieldShouldReturn(textField: UITextField) -> Bool {
    textField.resignFirstResponder()
    return false
}

旁注:除非您取消选择使用硬件键盘的选项,否则键盘不会显示在模拟器中。

这是一个示例项目,其中包含我认为您正在尝试实现的目标: https://mega.nz/#!B1ASDIQT!8-diyv_Fd2H66nb08gs3ObzlQqVHKUUIs4U_BbI6s4s