swift 中的 UITextField shouldChangeCharacters 不适用于输入的第一个字母

UITextField shouldChangeCharacters in swift is not working for the first letter entered

我有一个文本字段数量 phone。当我输入 phone 号码时,我正在检查无效 phone 号码的验证。我正在使用委托方法“文本字段应更改字符”。它工作正常,但不适用于用户输入的第一个字母。

extension phoneCell: UITextFieldDelegate {
    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        validateInput(of: textField)
        return true
    }

谁能帮我解决这个问题?

如果您注意到 shouldChangeCharactersIn 有一个 return 类型 Bool。 这意味着,当用户按下键盘上的某个键时,您甚至在在文本字段中注册该字符之前都会收到此委托的回调。 现在,如果您 return true,则按下的字符将反映在文本字段中,如果您 return false,则输入将被丢弃。

所以第一次你的 string.count 将是 1 但你的 textfeild.text.count 将是 0。

查看您的验证码,我建议您在文本字段中添加一个 IBAction 以进行编辑更改

你的验证函数是做什么的?为什么默认情况下 returning trueshouldChangeCharactersIn 应该 return 您的验证函数的结果。