通常,我们需要对 UITextField 的最大输入字符数进行限制。在编辑的时候进行限制总比提交表单后提示错误强。
第一步:添加委托
使 UITextView 所在的 UIViewController 遵从 UITextViewDelegate 协议,这次我们使用 extension :
extension MyViewController: UITextFieldDelegate{
//your code
}
第二步:实现协议中的监听方法
对于 UITextField 来说:
extension MyViewController: UITextFieldDelegate{
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
guard let oldText = textField.text else {return true}
let newLength = oldText.characters.count + string.characters.count
return newLength <= 17
}
}
textField: 当前 UITextField 对象
range: 将要被替换的文本的范围
string: 将要替换为的文本
17 是我们定义的最大输入限制字数
首先使用 guard 语句确保当前文本框内有文字内容。然后计算字符串改变之后的新长度,等于旧长度加上新长度。最后返回一个布尔值,判断长度是否大小于等于17,如果小于则可以把内容显示到文本框中,否则再继续输入也没有反应。
对于 UITextView 来说:
该协议的监听方法的内容基本一致,只是把方法中的关键字名称替换了就可以了。可能还需要限制 UITextView 的输入行数:
textView.textContainer.maximumNumberOfLines = 10