TextField的最大字符数限制

时间:2016-10-13 15:35:27

标签: ios character textfield

我希望限制用户可以在14处输入文本字段的字符数量。这是我找到文档的代码。

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

    let currentCharacterCount = userNameTextField.text?.characters.count ?? 0
    if (range.length + range.location > currentCharacterCount){
        return false
    }
    let newLength = currentCharacterCount + string.characters.count - range.length
    return newLength <= 14
}

但我觉得我没有正确实现这一点。我已经设置了

userNameTextField.delegate = self 
在viewDidLoad中

,我符合UITextFieldDelegate协议。

3 个答案:

答案 0 :(得分:2)

您声明您使用的是Swift 3.许多方法的签名在Swift 3中已更改。您需要使用:

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

不是你问题中贴出的旧签名。

如果仍未调用,则永远不要设置文本字段的delegate属性。

答案 1 :(得分:0)

请改为尝试:

func textField(textField: UITextField!, shouldChangeCharactersInRange range: NSRange, replacementString string: String!) -> Bool {
    let currentString: NSString = (textField.text ?? "") as NSString
    let newString = currentString.replacingCharacters(in: range, with: string)
    return  newString.characters.count <= 14
}

答案 2 :(得分:0)

尝试使用swift 3:

let limit=4;

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    guard let text = txtSMSCode.text else { return true }
    let newLength = text.characters.count + string.characters.count - range.length
    return newLength <= limit
}