Ios 在没有故事板的UITextField上以编程方式调用resignFirstResponder
我有一个自定义的Ios 在没有故事板的UITextField上以编程方式调用resignFirstResponder,ios,swift,uitableview,cocoa-touch,uitextfield,Ios,Swift,Uitableview,Cocoa Touch,Uitextfield,我有一个自定义的UITableViewCell,带有一个UITextField,它在自定义类中具有变量。我没有使用故事板,所以我没有出口;我是以编程的方式做这件事的 我在我的UIViewController中使用textfielddidediting来获取用户提供的值 public func textFieldDidEndEditing(_ textField: UITextField) { print("textvalue=\(textField.text!)"
UITableViewCell
,带有一个UITextField
,它在自定义类中具有变量。我没有使用故事板,所以我没有出口;我是以编程的方式做这件事的
我在我的UIViewController
中使用textfielddidediting
来获取用户提供的值
public func textFieldDidEndEditing(_ textField: UITextField)
{
print("textvalue=\(textField.text!)")
}
但是,如果点击导航栏按钮,则不会调用textfielddidediting
。我知道,如果我的UIViewController上有一个outlet和一个textfield变量,我可以使用resignFirstResponder
,这可能会导致调用textfielddidediting
,但正如我所说,我没有使用outlet/storyboard
我的UIViewController
中没有文本字段的此变量,因此我没有任何可调用的resignFirstResponder
我想我可以在我的自定义
UITableViewCell
中调用resignFirstResponder
,但我没有访问我的模型的权限 可以使用标识符识别文本字段,如标记
和可访问性
从UITableViewDelegate
中识别,然后使用即可使用
在中创建单元格时设置代理
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
cell.txtField.delegate = self
}
// then it will be called UITextFieldDelegate
public func textFieldDidEndEditing(_ textField: UITextField)
{
}
或者,您可以按照子视图的层次结构使用:
self.view.endEditing(true)
当用户从键盘按enter键时,是否调用TextFieldDiEndediting方法?导航栏按钮是指后退按钮吗?是的,在不同行的texrfield之间切换时会调用它,但导航栏上的a按钮不会调用它,您可以在DidSelectRow
中访问特定行的自定义UITableViewCell
,然后从那里调用resignFirstResponder
?谢谢,这不会在每次按键后关闭键盘吗?是的,也许您可以将单元格的indexath保存在变量中,然后,如果用户按下选项卡按钮,调用resignFirstResponder:let cell:CustomCelltableView.cellForRow(at:CustomPath)作为?CustomCell cell?.textInput.resignFirstResponder()
这样,如果按下按钮,它将退出最后点击的单元格。这有意义吗?嗯,你的意思是我点击按钮时调用self.view.endEditing(false)
?如果调用self.view.endEditing(true)
在点击按钮时,它将关闭所有键盘,因此我希望无论使用哪个输入,它都会调用didEndEditing。@Jules是的,如果您关闭视图上的进程(如退出键盘),这是一种方式,但取决于子视图的层次结构。