【发布时间】:2019-06-20 06:38:15
【问题描述】:
我有一个自定义的UITableViewCell 和一个UITextField,它在自定义类中有变量。我没有使用故事板,所以我没有出口;我正在以编程方式执行此操作。
我在UIViewController 中使用textFieldDidEndEditing 来获取用户提供的价值。
public func textFieldDidEndEditing(_ textField: UITextField)
{
print("textvalue=\(textField.text!)")
}
但是,如果点击导航栏按钮,则不会调用 textFieldDidEndEditing。我通常知道如果我的 UIViewController 上有一个插座和一个文本字段变量,我可以使用 resignFirstResponder 这可能会导致 textFieldDidEndEditing 被调用,但正如我所说我没有使用插座/情节提要。
我的 UIViewController 上没有这个变量用于文本字段,所以我没有任何东西可以调用 resignFirstResponder。
我想我可以在我的自定义 UITableViewCell 中调用 resignFirstResponder,但我无法访问我的模型。
【问题讨论】:
-
当用户从键盘按下回车时是否会调用 textFieldDidEndEditing 方法?导航栏按钮是指后退按钮吗?
-
是的,在不同行中的texrfields之间切换时确实会调用它,但不是从导航栏上的a按钮,
-
您可以在
DidSelectRow中访问您的自定义UITableViewCell以获取特定行并从那里调用resignFirstResponder? -
谢谢,每次按键后不会关闭键盘吗?
-
是的,也许您可以将单元格的索引路径保存在变量中,然后如果用户按下选项卡按钮调用 resignFirstResponder :
let cell:CustomCell? = tableView.cellForRow(at: CustomPath) as? CustomCell cell?.textInput.resignFirstResponder()这样如果按下按钮,它辞去最后一个被点击的单元格。这有意义吗?
标签: ios swift uitableview cocoa-touch uitextfield