網上有很多限制textField輸入長度方法,但是我覺得都不是很完美,準確來說可以說是不符合實際開發的要求,因此在這裡整理一下textField限制輸入長度的方法.我所採用的並不是監聽方法而是最不同的代理實現方法,為什麼不使用監聽呢???當你看到這篇文章很有可能視是為一件事所苦惱那就是使用監聽限制輸 ...
網上有很多限制textField輸入長度方法,但是我覺得都不是很完美,準確來說可以說是不符合實際開發的要求,因此在這裡整理一下textField限制輸入長度的方法.
我所採用的並不是監聽方法而是最不同的代理實現方法,為什麼不使用監聽呢???
當你看到這篇文章很有可能視是為一件事所苦惱那就是使用監聽限制輸入長度後不能夠完美的控制輸入內容.
舉一個簡單的例子:
你要限制輸入長度為30個字元,當你輸入30個字元後監聽的確可以很好的控制不讓你繼續輸入,但是問題也隨之而來,當你把游標移動到輸入內容中間的位置後,你是可以繼續輸入的這種輸入讓人很苦惱因為當你輸入後你的游標會移動到最後,並且限制你繼續輸入,但是你剛剛輸入的內榮卻保留在了文本中間,這很不符合要求.
因此在這裡採用代理可以很好的實現我們想要的效果,僅僅幾行代碼希望給你帶來幫助.
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { if (textField == self.liveThemeTextField) { //這裡的if時候為了獲取刪除操作,如果沒有次if會造成當達到字數限制後刪除鍵也不能使用的後果. if (range.length == 1 && string.length == 0) { return YES; } //so easy else if (self.liveThemeTextField.text.length >= 30) { self.liveThemeTextField.text = [textField.text substringToIndex:30]; return NO; } } return YES; }