【转】UITextField限制中文输入下的字符长度

2017-05-27  本文已影响10人  Jin丶hy

转自:UITextField限制中文输入下的字符长度

所以需要解决这个问题,实现方法如下:

1:注册文本改变通知,添加观察者监听输入框

[objc] view plain copy

[[NSNotificationCenter defaultCenter]addObserver:self  
                                    selector:@selector(textFiledEditChanged:)   
                                    name:@"UITextFieldTextDidChangeNotification"  
                                    object:nil];  

2:实现监听方法控制中文的输入
[objc] view plain copy

-(void)textFiledEditChanged:(NSNotification*)obj{  
    UITextField *textField = (UITextField *)obj.object;  
      
    NSString *toBeString = textField.text;  
    NSArray *currentar = [UITextInputMode activeInputModes];  
    // 键盘输入模式  
    UITextInputMode *current = [currentar firstObject];  
    //简体中文输入,包括简体拼音,健体五笔,简体手写  
    if([current.primaryLanguage isEqualToString:@"zh-Hans"]) {  
        UITextRange *selectedRange = [textField markedTextRange];  
        //获取高亮部分  
        UITextPosition *position = [textField positionFromPosition:selectedRange.start  offset:0];  
        //没有高亮选择的字,则对已输入的文字进行字数统计和限制  
        if(!position) {  
            if(toBeString.length > 20) {  
                textField.text = [toBeString substringToIndex:20];  
            }  
        }  
        //有高亮选择的字符串,则暂不对文字进行统计和限制  
        else{  
              
        }  
    }  
    //中文输入法以外的直接对其统计限制即可,不考虑其他语种情况  
    else{  
        if(toBeString.length > 20) {  
            textField.text= [toBeString substringToIndex:20];  
        }  
    }  
}  
上一篇下一篇

猜你喜欢

热点阅读