将 TextField 输入限制为大写字母、数字和 6 个字符限制?

Limit TextField Input to Capitals letters, Numbers and Character limit of 6?

我在网上搜索了很多关于限制TextFields的例子,但是我找不到任何关于限制多因素的例子。我正在使用的代码弄乱了输入,我不知道为什么。

这是我的代码: (注意:我已经设置了delegate)

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    guard let text = LPinput.text else { return true }
    let newLength = text.characters.count + string.characters.count - range.length
    LPinput.text = (textField.text! as NSString).replacingCharacters(in: range, with: string.uppercased())
    return newLength <= limitLength
}

这是我在 TextField 中输入的内容:

food

下面是文本字段中显示的内容:

FfOoOoD

请帮忙!

正如@rmaddy 所说,问题是您正在修改 UITextField.text 属性 和 return 之后为真,这会导致您的问题中出现重复行为,所以我更改它并首先检查 textLength 然后修改文本并且 return 始终为 false 以避免添加重复字符尝试使用此代码

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    guard let text = LPinput.text else { return true }
    let newLength = text.characters.count + string.characters.count - range.length
    if(newLength <= limitLength)
    {
    LPinput.text = (textField.text! as NSString).replacingCharacters(in: range, with: string.uppercased())
    }
    return false
}

希望对您有所帮助