iOS--UITextField动态限制输入的字数

1、定义一个事件:

- (void)limitLength:(UITextField *)sender {
    bool isChinese;//判断当前输入法是否是中文
    if ([[[UITextInputMode currentInputMode] primaryLanguage] isEqualToString: @"en-US"]) {
        isChinese = false;
    } else {
        isChinese = true;
    }
    
    if (sender == self.textField) {
        // 5位
        NSString *str = [[self.textField text] stringByReplacingOccurrencesOfString:@"?" withString:@""];
        if (isChinese) { //中文输入法下
            UITextRange *selectedRange = [self.textField markedTextRange];
            //获取高亮部分
            UITextPosition *position = [self.textField positionFromPosition:selectedRange.start offset:0];
            // 没有高亮选择的字,则对已输入的文字进行字数统计和限制
            if (!position) {
                NSLog(@"汉字");
                if ( str.length>=6) {
                    NSString *strNew = [NSString stringWithString:str];
                    [self.textField setText:[strNew substringToIndex:5]];
                }
            } else {
                NSLog(@"输入的英文还没有转化为汉字的状态");
            }
        } else {
            NSLog(@"str=%@; 本次长度=%ld",str,[str length]);
            if ([str length] >= 6) {
                NSString *strNew = [NSString stringWithString:str];
                [self.textField setText:[strNew substringToIndex:5]];
            }
        }
    }
}

2、对UITextField控件添加监听事件:

[self.textField addTarget:self action:@selector(limitLength:) forControlEvents:UIControlEventEditingChanged];

你可能感兴趣的:(iOS--UITextField动态限制输入的字数)