在没有情节提要的情况下以编程方式在 UITextField 上调用 resignFirstResponder
Programatically calling resignFirstResponder on a UITextField without a storyboard
我有一个带有 UITextField
的自定义 UITableViewCell
,它在自定义 class 中有变量。我没有使用故事板,所以我没有出口;我正在以编程方式执行此操作。
我在 UIViewController
中使用 textFieldDidEndEditing
来获取用户提供的值。
public func textFieldDidEndEditing(_ textField: UITextField)
{
print("textvalue=\(textField.text!)")
}
但是,如果点击导航栏按钮,则不会调用 textFieldDidEndEditing
。我通常知道如果我的 UIViewController 上有一个插座和一个文本字段变量,我可以使用 resignFirstResponder
这可能会导致 textFieldDidEndEditing
被调用,但正如我所说我没有使用插座/故事板。
我的文本字段 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)
{
}
或者您可以按照 subviews
的层次结构使用:
self.view.endEditing(true)
我有一个带有 UITextField
的自定义 UITableViewCell
,它在自定义 class 中有变量。我没有使用故事板,所以我没有出口;我正在以编程方式执行此操作。
我在 UIViewController
中使用 textFieldDidEndEditing
来获取用户提供的值。
public func textFieldDidEndEditing(_ textField: UITextField)
{
print("textvalue=\(textField.text!)")
}
但是,如果点击导航栏按钮,则不会调用 textFieldDidEndEditing
。我通常知道如果我的 UIViewController 上有一个插座和一个文本字段变量,我可以使用 resignFirstResponder
这可能会导致 textFieldDidEndEditing
被调用,但正如我所说我没有使用插座/故事板。
我的文本字段 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)
{
}
或者您可以按照 subviews
的层次结构使用:
self.view.endEditing(true)