Я хочу проверить, когда пользователь начинает редактировать текстовое поле. Существует отличный четкий ответ о том, как это сделать здесь .
Однако в моем случае мой textField находится внутри UITableview, который настроен как его собственный класс. Я пробовал много разных способов, чтобы заставить это работать, но я продолжаю получать сбой "libc ++ abi.dylib: завершение с неперехваченным исключением типа NSException" Я помещаю разрыв в функцию textFieldDidChange, и он никогда не вызывается так Кажется, проблема в том, как я называю эту функцию от цели.
class TextFieldCell: UITableViewCell {
lazy var textField: UITextField = {
let tf = UITextField()
tf.translatesAutoresizingMaskIntoConstraints = false
tf.textAlignment = .center
tf.textColor = .black
tf.font = UIFont.systemFont(ofSize: 17)
tf.clearButtonMode = .whileEditing
return tf
}()
// For simplicity, the rest of the Cell setup not shown.
// Adds target in AirInput VC to fire method when editing happens
textField.addTarget(self, action: #selector(AirInputViewController.textFieldDidChange(_:)), for: UIControl.Event.editingChanged)
}
class AirInputViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, UITextFieldDelegate {
@objc func textFieldDidChange(_ textField: UITextField) {
}
}
Я также попробовал следующее для цели, и она тоже вылетает.
textField.addTarget(AirInputViewController.self, action: #selector(AirInputViewController.textFieldDidChange(_:)), for: UIControl.Event.editingChanged)
Такое ощущение, что мне не хватает чего-то простого, но я понятия не имею, что это за простое исправление. Или, возможно, я должен добавить цель в AirInputViewContoller? Если да, то как мне получить доступ к UITableViewCells, где находится текстовое поле? Спасибо!