首页 > 其他 > 详细

分享一个字数限制和统计的UITextView分类方法

时间:2016-05-06 12:01:17      阅读:289      评论:0      收藏:0      [点我收藏+]
- (NSUInteger)letterCountWithLimits:(NSInteger)limits {
    NSString *toBeString = self.text;
    NSUInteger txtCount = toBeString.length;

    UITextRange *selectedRange = [self markedTextRange];
    //获取高亮部分
    UITextPosition *position = [self positionFromPosition:selectedRange.start offset:0];
    
    // 没有高亮选择的字,则对已输入的文字进行字数统计和限制
    if (!position) {
        if (toBeString.length > limits) {
            
            self.text = [toBeString substringToIndex:limits];
        }
    }
    
    // 有高亮选择的字符串,去掉高亮的字数
    else{
        NSInteger startOffset = [self offsetFromPosition:self.beginningOfDocument toPosition:selectedRange.start];
        NSInteger endOffset = [self offsetFromPosition:self.beginningOfDocument toPosition:selectedRange.end];
        NSRange offsetRange = NSMakeRange(startOffset, endOffset - startOffset);
        
        // 去掉高亮的字数
        txtCount -= offsetRange.length;
    }
    
    // 超出部分警告和限制
    if (txtCount > limits) {
        self.text = [toBeString substringToIndex:limits];
        return limits;
    }
    return txtCount;
}

- (void)textViewDidChange:(UITextView *)textView 中调用该方法即可,返回值是当前字数。

markedTextRange, 去掉高亮的字数,对于中文是需要做这样的处理的。

不足的地方在于对\n只看成一个字,以及许多emoji会认为是两个字。

分享一个字数限制和统计的UITextView分类方法

原文:http://www.cnblogs.com/moona/p/5465073.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!