UITextField中文輸入法輸入時對字符長度的限制

一 .UITextField添加隨值改變的方法code


  1. [_textField addTarget:self action:@selector(textFiledDidChange:) forControlEvents:UIControlEventEditingChanged];

二 .設置監聽
server

 

[[NSNotificationCenter defaultCenter]addObserver:selfselector:@selector(textFiledDidChange:)
                                           name:@"UITextFieldTextDidChangeNotification"
                                         object:_textField];

但無論哪一種方式,實現的方式是同樣的字符串

- (void)textFiledDidChange:(UITextField *)textField
{
    if (textField == _textField) {
        NSString *toStr = textField.text;
        NSLog(@"%lu", (unsigned long)toStr.length);
        NSString *lang = textField.textInputMode.primaryLanguage;// 鍵盤輸入模式

        if ([lang isEqualToString:@"zh-Hans"]) {// 簡體中文輸入,包括簡體拼音,健體五筆,簡體手寫
            UITextRange *range = [textField markedTextRange];
            //獲取高亮部分
            UITextPosition *position = [textField positionFromPosition:range.start offset:0];
            if (!position) {// 沒有高亮選擇的字,則對已輸入的文字進行字數統計和限制
                if (toStr.length > 20) {
                    _textField.text = [toStr substringToIndex:20];
                } // 有高亮選擇的字符串,則暫不對文字進行統計和限制
            }
        } else {// 中文輸入法之外的直接對其統計限制便可,不考慮其餘語種狀況
            if (toStr.length > 20) {
                _textField.text = [toStr substringToIndex:20];
            }
        }
    }
}
相關文章
相關標籤/搜索