在 swift 4 中使用键盘删除字符后,文本字段计数显示前一个字符

textfield count show previous character after deleting character using keyboard in swift 4

我用过文本框。我需要计算字符数以在 11 个字符后调用函数。功能正常 find.But 当我删除一个字符时,它显示前一个字符。我在文本字段中输入了 01921687433。但是当从该数字中删除一个字符时,如 0192168743 它显示完整数字 11 位数字而不是 10 位数字。但是文本字段显示 0192168743。这是我的代码..

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
//print("While entering the characters this method gets called")


     let currentText = textField.text! + string

    if(currentText.characters.count == 11){

        print("account 11 digit =", currentText)
      //Action here

    }


  return true;
 }

请帮我找到当前文本

您确定更新文本的代码有误。请记住,可以删除、替换或添加任意数量的文本,并且它可以根据当前选择出现在字符串中的任何位置。

您的代码应如下所示:

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    let newText = textField.text!.replacingCharacters(in: Range(range, in: textField.text!)!, with: string)

    if newText.count == 11 {
        print("account 11 digit = \(newText)")
    }

    return true
}

此代码中的强制展开是安全的。 UITextFieldtext 属性 永远不会 return nil 并且范围转换总是会成功,除非 Apple 在 UIKit 中引入错误。

另请注意,characters 的使用已被弃用一段时间。 Swift 行尾不需要分号,if 语句中也不需要括号。