我在网上搜索过并找到了很多关于限制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
请帮忙!
答案 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
}
希望这有助于你