我有一個字段,需要通過SMS發送驗證碼。發送給所有用戶的代碼是4位數字代碼。我希望用戶輸入代碼,並在輸入第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)如果text.character.count == 4,你可以使用else。 –