繁体   English   中英

TextField 的最大字符限制

[英]Max Character Limit for 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协议。

您声明您使用的是 Swift 3。许多方法的签名在 Swift 3 中发生了变化。您需要使用:

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

不是您问题中张贴的旧签名。

如果它仍然没有被调用,那么你永远不会设置文本字段的delegate属性。

试试这个:

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
}

试试这个 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
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM