Я пытаюсь проверить, когда изменяется текстовое поле, эквивалентно функции, используемой для textView - textViewDidChange
до сих пор я сделал это:
func textFieldDidBeginEditing(textField: UITextField) {
if self.status.text == "" && self.username.text == "" {
self.topRightButton.enabled = false
} else {
self.topRightButton.enabled = true
}
}
Какой тип работает, но topRightButton
он включается, как только текстовое поле нажимается, я хочу, чтобы оно было включено только тогда, когда текст введен на самом деле?
ios
swift
uitextfield
boraseoksoon
источник
источник
viewDidLoad
. Действие буква за буквой то же самое. Приложение вылетает, как только нажимается кнопка клавиатуры. Изменить: понял это! Отсутствует точка с запятой внутри действия. Я предположил, что оно должно совпадать с именем функции.Вы можете сделать это соединение в конструкторе интерфейсов.
В раскадровке щелкните редактор-помощник вверху экрана (два кружка посередине).
Ctrl + клик по текстовому полю в конструкторе интерфейсов.
Перетащите из EditingChanged внутрь вашего класса контроллера представления в представлении помощника.
Назовите свою функцию (например, «textDidChange») и нажмите «Подключиться».
источник
Swift 5.0
и метод обработки:
Swift 4.0
и метод обработки:
Swift 3.0
и метод обработки:
источник
То, как я справился с этим до сих пор: в
UITextFieldDelegate
Версия Swift4
источник
Свифт 3
источник
Swift 3.0.1+ (некоторые другие ответы swift 3.0 не актуальны)
источник
textField (_: shouldChangeCharactersIn: replaceString :) работал для меня в Xcode 8, Swift 3, если вы хотите проверить каждое нажатие клавиши.
источник
Swift 4
Соответствует UITextFieldDelegate .
источник
Вы можете использовать этот метод делегата из UITextFieldDelegate. Он срабатывает при каждой смене персонажа.
Однако ЭТО ТОЛЬКО ОСТАЕТСЯ ПЕРЕД изменениями (действительно, изменение будет сделано, только если вы вернете истину отсюда).
источник
.isEmpty
метод не приравнивается к true, пока ПОСЛЕ того, как этот метод не сможет вернуть true; сообщить приложению, что текстовое поле должно измениться.Может быть, использовать RxSwift?
необходимость
добавить импорт очевидно
Так у тебя есть
textfield : UITextField
У вас есть 3 других метода ..
источник
Swift 4
Если вы хотите внести изменения после того, как пользователь полностью ввел данные (они будут вызваны, когда пользователь отклонит клавиатуру или нажмете клавишу ввода).
источник
источник
Вы должны следовать этим шагам:
Образец кода:
источник
Вот как вы можете добавить
textField text change listener
использование Swift 3 :Объявите свой класс как
UITextFieldDelegate
Затем просто традиционно добавьте функцию textFieldShouldEndEditing:
источник
Swift 4.2
напишите это в viewDidLoad
написать это за пределами viewDidLoad
Вы можете изменить событие с помощью UIControl.Event.editingDidBegin или того, что вы хотите обнаружить.
источник
На всякий случай, если вы заинтересованы в решении SwiftUI, это работает для меня:
Я должен сказать, что это не моя идея, я прочитал это в этом блоге: привязка SwiftUI: очень простой трюк
источник
В случае, если невозможно связать addTarget с вашим UITextField, я советую вам связать один из них, как предложено выше, и вставить код для выполнения в конце метода shouldChangeCharactersIn.
И в вызове следует изменитьCharactersIn func.
источник
Теперь на iOS13 + доступен метод делегата UITextField.
источник
Свифт 4
В viewDidLoad ():
Добавьте эту функцию:
источник
создать новый пользовательский класс MaterialTextfield.swift
источник
UITextField
, обновил ли a свое значение - зачем создавать слишком сложный класс для решения этой простой проблемы?