我有一个带有 UITextField
的自定义 UITableViewCell
,它在自定义类中具有变量。我没有使用 Storyboard,所以我没有导出;我正在以编程方式执行此操作。
我在 UIViewController
中使用 textFieldDidEndEditing
来获取用户提供的值。
public func textFieldDidEndEditing(_ textField: UITextField)
{
print("textvalue=\(textField.text!)")
}
但是,如果点击导航栏按钮,则不会调用 textFieldDidEndEditing
。我通常知道,如果我的 UIViewController 上有一个 socket 和一个文本字段变量,我可以使用 resignFirstResponder
这可能会导致 textFieldDidEndEditing
被调用,但正如我所说,我不是使用 socket / Storyboard。
我的 UIViewController
上的文本字段没有此变量,因此我没有任何可调用 resignFirstResponder
的内容。
我想我可以在自定义 UITableViewCell
中调用 resignFirstResponder
但我无权访问我的模型。
最佳答案
可以通过使用 UITableViewDelegate
中的 tags
和 accessibility
等标识符来识别您的文本字段,然后使用可以使用,
在创建单元格时设置委托(delegate)
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
cell.txtField.delegate = self
}
// then it will be called UITextFieldDelegate
public func textFieldDidEndEditing(_ textField: UITextField)
{
}
或者您可以按照 subview
的层次结构使用:
self.view.endEditing(true)
关于ios - 在没有 Storyboard的情况下以编程方式在 UITextField 上调用 resignFirstResponder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54382017/