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

时间:2017-07-12 22:02:25

标签: ios swift delegates nsstring uitextfield

我在网上搜索过并找到了很多关于限制TextFields的例子,但我找不到任何限制多个因素的例子。我工作的代码搞砸了输入,我无法弄清楚原因。

继承我的代码: (注意:我已经设置了代理人)

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中输入的内容:

  

食品

这是TextField中显示的内容:

  

FfOoOoD

请帮忙!

1 个答案:

答案 0 :(得分:1)

正如@rmaddy所说,问题是你正在修改UITextField.text属性并在此之后返回true,这会导致你的问题中出现重复的行为,所以我改变了这一点,首先检查textLength然后检查修改文本并返回始终为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
}

希望这有助于你