под капотом есть развесистый метод shouldChangeCharactersIn..., так вот в нем есть различные проверки на кейсы типа есть ли emoji, запрещенные символы, входит ли строка в максимально допустимую длину и тд
если какая-то проверка не проходит - там есть логика которая преобразует строку, ставит новые текст в поле ввода, а в результате возвращает false (указание системе, что не надо нам менять текст в поле ввода, мы сами уже все сделали)
и вот тот метод, который вставлял этот текст, был не очень - там не очищалась ошибка
так что я подумал, что вставка текста - это изменение текста, а при изменении у нас обычно ошибка сбрасывается
так что добавил строку со сбросом ошибки
Как проверить
в Example проекте ввести в textView что-нибудь длинное и по-русски
скопировать
перейти на пример с полем ввода, включить пресет имени
ввести что-то стереть, снять фокус и получить ошибку
а потом снова поставить фокус и вставить текст (надо чтобы он превышал максимально допустимое для имени значение по длине - 20)
ошибка в подстрочечнике должна пропасть, причем и текст поменяться, и сам текст не должен быть красным больше
Что сделано
Как проверить