Swift 4 shouldChangeCharactersIn只显示长度= 12

时间:2017-12-04 21:37:31

标签: ios swift uitextfield

我有textfieldshouldChangeCharactersIn代码使用条形码,系统和我的条形码代码== 12个字符。我想在我的字符串中只显示12个字符,如果条形码小12个字符或大字必须返回false或干净的文本字段。我的代码如下。当我使用条形码时,如果我的条形码12个字符工作正常,但如果我读了12个字符低,请不要清除文本字段,

  

我该如何解决?

我的代码如下。

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

        let length = (Mytext.text?.characters.count)! - range.length + string.characters.count
        if length == 13 {

            print("Mytext=\(Mytext.text!)")
            Mytext.text = ""

            return true

        }else {


            return true
        }


    }

读取时输出12个字符条形码显示成功! 当读取12个字符时,不要清除Mytext字段,当我再次阅读时添加+

2 个答案:

答案 0 :(得分:2)

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

    if (string != "" && textField.text?.count == 12) {

        print("Mytext = \(textField.text!)")
        textField.text = ""
        return false
    }

    return true
}

答案 1 :(得分:1)

您必须将替换字符串设置为“”空字符串

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

    let length = (Mytext.text?.characters.count)! - range.length + string.characters.count
    if length == 13 {

        print("Mytext=\(Mytext.text!)")
        Mytext.text = ""

        return true

    }else {


        return true
    }


}