在没有情节提要的UITextField上以编程方式调用resignFirstResponder

时间:2019-01-26 19:36:08

标签: ios swift uitableview cocoa-touch uitextfield

我有一个带有UITableViewCell的自定义UITextField,该自定义类中有变量。我没有使用情节提要,所以没有插座。我正在以编程方式进行此操作。

我正在textFieldDidEndEditing中使用UIViewController来获取用户提供的价值。

    public func textFieldDidEndEditing(_ textField: UITextField)
    {
        print("textvalue=\(textField.text!)")
    }

但是,如果轻按导航栏按钮,则不会调用textFieldDidEndEditing。我通常知道我的UIViewController上是否有插座和文本字段变量,我可以使用resignFirstResponder,这可能会导致调用textFieldDidEndEditing,但是正如我所说的,我没有使用插座/情节提要。

我在UIViewController的文本字段上没有此变量,因此我没有什么可调用resignFirstResponder的。

我想我可以在自定义resignFirstResponder中调用UITableViewCell,但是我无权访问我的模型。

1 个答案:

答案 0 :(得分:3)

可以通过使用tags中的accessibilityUITableViewDelegate这样的标识符来标识您的文本字段,然后使用can use,

中创建单元格时设置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)