Я разбираюсь с функциями текстового поля, которые позволяют вам проверять, когда происходит "didEndEditing" или "shouldStartEditing".
У меня это работает нормально, когда у меня есть 2 текстовых поляи одна кнопка.Если я хочу включить кнопку после некоторой проверки, я использую «didEndEditing» для выполнения проверки и включаю кнопку, если все в порядке, когда пользователь нажимает в другое поле.
Проблема Если у вас есть только одно текстовое поле и одна кнопка на странице, где я требую, чтобы для ввода в текстовое поле перед включением кнопки были разрешены только целые числа, как мне этого добиться?
т.е. кнопка отключена.Как я вводить текст в текстовое поле, если только целые числа, затем включить кнопку.Если что-то не так, в реальном времени, когда вы печатаете.
Поскольку есть только одно текстовое поле, я не думаю, что могу использовать «didEndEditing», потому что вы никогда не «покидаете» текстовое поле (больше нечего нажимать)
Что я пробовал Я пробовал это:
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
print("While entering the characters this method gets called")
if textField === timeInputField {
//set which characters are valid
let invalidCharacters = CharacterSet(charactersIn: "0123456789").inverted
//if text isn't empty then hide the error label ("must input a time")
if timeInputField.text?.isEmpty == false {
timeInputErrorLabel.isHidden = true
}
//if the string returns values in the range set button to enabled
return string.rangeOfCharacter(from: invalidCharacters, options: [], range: string.startIndex ..< string.endIndex) == nil
} else {
doWorkoutButtonOutlet.isEnabled = true
}
return true
}
Я думаю, что я по сути пытаюсь достичь этого Нужно включить кнопку при вводе текста в поле. в Swift 4!