UITextField中文输入法输入时对字符长度的限制

一 .UITextField添加随值改变的方法


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

二 .设置监听

 

[[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];
            }
        }
    }
}


你可能感兴趣的:(UITextField中文输入法输入时对字符长度的限制)