通常,我們需要對 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