iOS UITextView字数限制 拼音

我们开发的时候,产品经常会要求:详细描述,0/500字,当我们限制了字数的时候,假如我们输入了499个字,当用拼音输入最后一个字的时候,会发现不能输入,因为我们把拼音长度也算了进去,这个时候就需要特殊处理了。

首先,我们可以定义一个全局常量500:

static NSInteger MaxTVCount_500 = 500;

定义全局的textView和用于展示数字的numLab

@property (nonatomic,weak)      UITextView          *textView;
@property (nonatomic,weak)      UILabel             *numLab;

然后初始化一个UITextView和一个UILabel

UITextView *textView = [[UITextView alloc] init];
self.textView = textView;
textView.delegate = self;
[self.view addSubview:textView];

UILabel *numLab = [[UILabel alloc] init];
self.numLab = numLab;
[self.view addSubview:numLab];

具体的字数处理,就放在UITextViewDelegate里面处理了

- (void)textViewDidChange:(UITextView *)textView {
    UITextRange *proRange = textView.markedTextRange;
    UITextPosition *pos = [textView positionFromPosition:proRange.start offset:0];
    if (proRange && pos) {
        return;
    }
    NSUInteger count = textView.text.length;
    if (count > MaxTVCount_500) {
        NSRange rangeIndex = [textView.text rangeOfComposedCharacterSequenceAtIndex:MaxTVCount_500];
        if (rangeIndex.length == 1) {
            textView.text = [textView.text substringToIndex:MaxTVCount_500];
        } else {
            NSRange rangeRange = [textView.text rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, MaxTVCount_500)];
            textView.text = [textView.text substringWithRange:rangeRange];
        }
        self.numLab.text = [NSString stringWithFormat:@"%ld/%ld",MaxTVCount_500,MaxTVCount_500];
    } else {
        self.numLab.text = [NSString stringWithFormat:@"%ld/%ld",count,MaxTVCount_500];
    }
}

如有不确定地方或者拓展或者问题,比如仿UITextField的PlaceHolder默认占位字,可在评论下方咨询

搞定!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值