美文网首页
UITextField、UITextView限制输入的方案

UITextField、UITextView限制输入的方案

作者: 东升西西 | 来源:发表于2019-02-26 14:17 被阅读0次

一、需求:
1、限制输入TextField输入上限为18字(数字、汉字、英文都按一个字计算、表情按2字计算、等同于string.length);
2、到达输入上限后或复制大段文字后截取前18字;

二、代码
1、给textField添加监听方法。

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

2、处理textFieldDidChangd:

    NSString *toBeString = textField.text;
    if (![textField markedTextRange]) { //判断是否输入完成状态
        if (toBeString.length > 18) {
            textField.text = [toBeString ds_subStringLength:kMaxLength];
        }
    }

3、字符串截取的处理,发现最后一个字符串是表情时使用系统方法截取字符串后出现乱码;自定义了一个截取字符串的方法;

- (NSString *)ds_subStringLength:(NSUInteger)length{
    NSInteger subLength = 0;
    NSRange range;
    for (int i = 0; i < self.length;i+= range.length) {
        range = [self rangeOfComposedCharacterSequenceAtIndex:i];// 获取当前位置字符的的区间
        NSString *str = [self substringWithRange:range];
        subLength += range.length;
        if (subLength > length) {
            return [self substringToIndex:i];
        }
    }
    return nil;
}

相关文章

网友评论

      本文标题:UITextField、UITextView限制输入的方案

      本文链接:https://www.haomeiwen.com/subject/hsjayqtx.html