[решено] textViewDidChangeSelection


#1

Есть такая классная функция textViewDidChangeSelection, но она для UITextView, а для UITextField есть такая?


#2

что-то вроде такого ?

https://developer.apple.com/documentation/uikit/uitextfielddelegate/1619599-textfield

optional func textField(_ textField: UITextField,
shouldChangeCharactersIn range: NSRange,
replacementString string: String) -> Bool


#3

Получается оно, но не получается его применить, … чтобы как только в поле что-то изменится, то выполнялось “textField.textColor = .white”


#4

в чем задача? При редактировании текста изменять его цвет? или при активирование tf?


#5
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        textField.textColor = .white
        return true
    }

string - это символ который ты ввела последним, его еще нет в отображении, т.е. ты можешь в условии указать, чтобы после ввода определенного символа твой текст окрашивался, первый параметр - это тф до ввода нового символа, ранж - (3, 1)
3 - колво символов без последнего введеного
1- это значит что символ добавляется, 0 - что символ удаляется

если у тебя в поле уже есть текст, и ты хочешь его покрасить в белый то при вводе любого символа текст окрасится в белый

не забудь у tf указать делегат

tf.delegate = self

делегаты отслеживают события начала и конца активности

func textFieldDidBeginEditing(_ textField: UITextField) {
        textField.textColor = .red
    }
func textFieldDidEndEditing(_ textField: UITextField) {
        textField.textColor = .black
}

#6

СПАСИБО! :hugs: Буду переваривать сейчас.

нужно, чтобы как только первый символ введен, либо если там уже есть текст, то при его редактировании первый символ ввели или удалили, в общем любое изменение.


#7

Ну тогда если именно что произошел ввод, а не просто пользователь нажал на поле то первый способ) Если просто, что поле активировано, то второй)

Удачи!)


#8

Спасибо большое!!!