1. 程式人生 > >關於iOS的鍵盤輸入長度限制研究

關於iOS的鍵盤輸入長度限制研究

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。