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];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容