У меня есть поле, которое берет код подтверждения, отправленный через SMS. Код, отправленный всем пользователям, представляет собой четырехзначный цифровой код. Я хочу, чтобы пользователь вводил код, и после ввода 4-й цифры код проверяется автоматически (без необходимости нажатия кнопки) и печатать на консоль, если соответствует ожидаемому значению. Если они не совпадают, напечатайте Неправильно на консоли (консоль, используемая здесь для печати).Swift: проверьте количество входных данных пользователя, чтобы продолжить
Предполагая, что код у меня есть (фиксированный для целей тестирования) 1234, ниже моя попытка, что не работает, как ожидалось:
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if let text = textField.text {
if let floatingLabelTextField = textField as? SkyFloatingLabelTextField {
if(text.characters.count > 4) {
floatingLabelTextField.errorMessage = "code is invalid"
}
else {
// The error message will only disappear when we reset it to nil or empty string
floatingLabelTextField.errorMessage = ""
let smsInputCode = Int(self.verificationTextField.text!)
if(smsInputCode == self.smsSampleCode)
{
print("Correct Code")
}else{
print("Incorrect Code")
}
}
}
}
return true
}
Приведенный выше код печатает «неправильные» в 4 раза я печатаю цифры затем показывают правильный код только после того, как я нажму на панель вкладок на клавиатуре (не автоматическое обнаружение).
Цените свою помощь.
@Khalid я думаю, вы типа 1 в текстовом поле он проверяет 1 == 1234 печатает неверно, то же самое для 2 = 1234 печатать неправильно, 3 = 1234 снова неверно, а затем 4 = 1234 снова неверно, а затем выйти. Затем, наконец, 1234 = 1234 дает вам правильное значение, когда вы нажимаете панель вкладок. –
@sasquatch Если это будет сделано, как это поможет с правильными и неправильными утверждениями? – ksjg
@Ksjg Вместо (else) вы можете использовать else, если text.character.count == 4. –