我有一个带有UITextField
的自定义UITableViewCell
,它在自定义类中具有变量。我没有使用故事板,所以我没有出口;我正在以编程方式执行此操作。
我在UIViewController
中使用textFieldDidEndEditing
来获取用户提供的值。
public func textFieldDidEndEditing(_ textField: UITextField)
{
print("textvalue=(textField.text!)")
}
但是,如果点击导航栏按钮textFieldDidEndEditing
则不会调用。我通常知道如果我的UIViewController上有一个出口和一个文本字段变量,我可以使用resignFirstResponder
这可能会导致textFieldDidEndEditing
被调用,但正如我所说,我没有使用出口/故事板。
我的UIViewController
上没有这个变量用于文本字段,所以我没有什么可以调用resignFirstResponder
的。
我想我可以在我的自定义UITableViewCell
中调用resignFirstResponder
,但我无法访问我的模型。
可以通过使用标识符(例如 tags
和 accessibility
from UITableViewDelegate
然后使用可以使用来识别您的文本字段,
在中创建单元格时设置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)