iOS UITextView实现字数的限制以及字数的累计

97 篇文章 0 订阅
79 篇文章 2 订阅
//输入最大字数
#define MAX_NUMBER  200
#pragma mark 在内容改变的时候调用,会记录UITextView内容的个数,当内容超过返回NO
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{
    NSString *comcatstr = [textView.text stringByReplacingCharactersInRange:rangewithString:text];
    NSInteger caninputlen =MAX_NUMBER - comcatstr.length;
    if (caninputlen >=0){
        return YES;
    }else{
        NSInteger len = text.length + caninputlen;
        //防止当text.length + caninputlen < 0时,使得rg.length为一个非法最大正数出错
        NSRange rg = {0,MAX(len,0)};
        if (rg.length >0){
            NSString *s = [text substringWithRange:rg];
            [textView setText:[textView.text stringByReplacingCharactersInRange:rangewithString:s]];
        }
        return NO;
    }
}

#pragma mark 当上面的方法内容返回YES调用,没懂内容增加或者改变时 self.number_label.text显示内容计数也会根据内容多少改变;
-(void)textViewDidChange:(UITextView *)textView{//当输入且上面的代码返回YES时触发。或当选择键盘上的联想字时触发。
    NSString  *nsTextContent = textView.text;
    NSInteger existTextNum = nsTextContent.length;
    if (existTextNum >MAX_NUMBER){
        //截取到最大位置的字符
        NSString *s = [nsTextContent substringToIndex:MAX_NUMBER];
        [textView setText:s];
    }
    //不让显示负数
    self.number_label.text = [NSStringstringWithFormat:@"%ld/%d",MAX(0,MAX_NUMBER - existTextNum),MAX_NUMBER];

}
效果图
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王 哪跑!!!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值