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是的,如果您关闭视图上的进程(如退出键盘),这是一种方式,但取决于子视图的层次结构。