Существует два основных вида, используемых для захвата ввода текста на iOS: UITextField
и UITextView
. У каждого есть соответствующий делегат для уведомления об изменениях ввода.
UITextFieldDelegate
UITextField
имеет делегата, который соответствует UITextFieldDelegate
, который можно использовать для получения уведомлений об изменениях ввода. В частности, вы захотите реализовать этот метод:
func textField(_:shouldChangeCharactersIn:replacementString:) -> Bool
Этот метод вызывается каждый раз, когда происходит изменение ввода. Причина, по которой он предоставляет диапазон символов, заключается в том, что пользователь может сделать что-то вроде вырезания или вставки, чтобы изменить больше, чем символ за раз. Вы также можете увидеть, что этот метод возвращает логическое значение. Вы принимаете ввод текста, возвращая true
, и можете отклонить изменение, возвращая false
.
UITextViewDelegate
UITextView
делегат соответствует UITextViewDelegate
. Вы захотите реализовать этот метод:
func textView(_:shouldChangeTextIn:replacementText:) -> Bool
Это должно работать так же, как метод для UITextFieldDelegate
.
Если вы заинтересованы, просто знайте, что текст изменился но вам не нужна подробная информация о точном изменении, вы можете реализовать этот метод:
func textViewDidChange(_:)