Swift 在文本输入期间验证 2 uitextfield 密码

Posted

技术标签:

【中文标题】Swift 在文本输入期间验证 2 uitextfield 密码【英文标题】:Swift validate 2 uitextfield password during text entry 【发布时间】:2020-11-23 05:15:27 【问题描述】:

我有 2 个文本字段,其中包含 1 个输入 pin 和 1 个重新输入 pin,我尝试使用 shouldChangeCharactersIn 进行验证,因此如果 pin 不同,它会自动显示一条小文本消息,表示 pin 不同。很好,但不是很好,因为如果我只是在我的输入引脚中输入 6 引脚,并且我还在重新输入引脚中输入 6 引脚,(在这种情况下,我故意输入错误的引脚)并且消息不会弹出,但是如果我输入超过 6 次,比方说输入 7 的数字会显示消息,为什么我不明白。

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

    if textConfirmPIN.text!.count == 6 && textPIN.text!.count == 6 
        if textConfirmPIN.text != textPIN.text
            self.showError(message: "PIN is not the same")
        
    

    return true

抱歉我的英语不好,但谁能告诉我发生了什么事?谢谢大家

【问题讨论】:

【参考方案1】:

使用文本字段编辑更改事件而不是 shouldChangeCharactersIn,因为当您在 shouldChangeCharactersIn 中检查 textConfirmPIN.text!.count 时,最后输入的字符仍然不存在,直到返回 true

这就是你输入第 7 个字符时调用它的原因

【讨论】:

啊,好吧2现在我明白了,谢谢先生的回答,我花了一整天的时间来解决这个问题

以上是关于Swift 在文本输入期间验证 2 uitextfield 密码的主要内容,如果未能解决你的问题,请参考以下文章

Swift 4 或 Swift 5 中的 UITextView 用户输入文本验证:限制 Swift 中的特定字符

在 SwiftUI 中的 forEach 期间将文本字段输入添加到数组

有没有一种方法可以使用 swift 在 alertview 内的文本字段中提供验证

为啥我无法在 Swift 的登录按钮中验证 textFields

按下按钮后 UIAlert 验证中的 Swift3 UITextField

在 Swift 的弹出式 datePickerView 中添加完成按钮?