【发布时间】:2019-09-13 22:34:47
【问题描述】:
我目前正在尝试在 UITextField 上设置最大长度,根据 UITextField 委托方法可以正常工作
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let currentText = textField.text ?? ""
guard let stringRange = Range(range, in: currentText) else { return false }
let updatedText = currentText.replacingCharacters(in: stringRange, with: string)
return updatedText.count <= 9
}
我遇到的问题是在使用自动完成时已经输入了一些文本。
例如,UITextField 设置为具有邮政编码的内容类型。如果我从空的UITextField 自动完成邮政编码LS27 8LN 或类似的,一切正常
一个示例问题是,如果我在UITextField 中已经有邮政编码LS,并且我自动完成LS27 9AL,示例代码中的updatedText 是LSLS27 9AL,它超过了我的最大长度。该范围的位置和长度也为 0
我注意到的一件事是,如果我一起删除委托方法,iOS 似乎无论如何都会替换 UITextField 中的当前文本。
【问题讨论】: