關於iOS的鍵盤輸入長度限制研究
阿新 • • 發佈:2019-01-01
iOS向我們提供了控制UITextField的輸入長度限制方法:
- (BOOL)textField:(UITextField *) textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if(rang.length > 10) {
return NO;
}
return YES;
}
當輸入長度超過10,不讓輸入鍵盤輸入。
但是這樣並不能完全起作用,在中文輸入的時候,我們會發現iOS輸入法向我們提供了聯想詞彙,當我們從聯想詞彙向輸入框新增文字的時候,並不會使上面的委託方法呼叫,這時候我們的UITextField輸入框的字串長度將會超過10,這時候我們不得不採用一些額外的方法了,比如:
[textField addTarget:self action:@selector(textValueChange:) forControlEvents:UIControlEventEditingChanged];
我們給UITextField物件添加了一個事件,當輸入變化的時候會呼叫該事件方法:
- (void) textValueChange:(UITextField *) textField {
NSInteger length = textField.text.length;
if (length > 10) {
textField .text = [textField.text substringToIndex:10];
}
}
當輸入長度大於10的時候,我們取前10個字元,類似的問題還可以應用於UISearchBar,UITextView。