气质程序媛养成记第三篇

今天咱们直入主题吧,来摆几个最近写的小分类,感觉还是挺好用的

NO1:限制输入框的字符数

做项目过程中,经常会遇到限制输入XX个字符的需求(中文两个字符,英文一个字符)。为此我分别给textField和textView写了一个分类,用来限制和裁剪字符数。

1、首先,我们需要给分类里面添加一个属性,用来记录当前输入框的内容。

  • 在.m文件里添加属性
@property (nonatomic,strong)NSString *endString;
  • 用运行时来实现该属性的set和get方法
static char endStringKey;
-(void)setEndString:(NSString *)endString
{
    objc_setAssociatedObject(self, &endStringKey, endString, OBJC_ASSOCIATION_COPY);
}
-(NSString *)endString
{
    return objc_getAssociatedObject(self, &endStringKey);
}

2、接下来,就该实现限制和裁剪字符数了
输入框是存在高亮状态和非高亮状态的,我们需要计算的是非高亮状态的字符串。具体代码如下

- (void)limitCharactersWithNumber:(NSInteger )number callbackHandler:(void (^)(BOOL isOverflow,NSInteger charCount))callback
{
    UITextRange *selectedRange = [self markedTextRange];
    //获取高亮部分
    UITextPosition *position = [self positionFromPosition:selectedRange.start offset:0];
    // 没有高亮选择的字,则对已输入的文字进行字数统计和限制
    if (!position) {
        /*计算中英文字符串长度   中文占2个字符*/
        NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
        NSInteger len = [self.text lengthOfBytesUsingEncoding:enc];
        self.attributedText = [self.text getNSAttributedStringWithTextViewDict:nil fontSize:ZGTextFont_13 textColor:[UIColor colorWithString:ZGColor_DarkGary333]];
        if (len <= number) {
            self.endString = self.text;
            callback(NO,len);
        }else{
            self.text = self.endString;
            NSInteger len = [self.text lengthOfBytesUsingEncoding:enc];
            callback(YES,len);
        }
 }
    // 有高亮选择的字符串,则暂不对文字进行统计和限制
    else{
    }
}

此致,敬礼,收工~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,261评论 4 61
  • 1、禁止手机睡眠[UIApplication sharedApplication].idleTimerDisabl...
    DingGa阅读 1,148评论 1 6
  • 早上醒来娄宝发来荷兰的照片 一小时前我喵发定位说在上海过圣诞 我呢 觉也没睡的多安稳 一瞬间想买了机票跑去上海 可...
    一块瘦司阅读 170评论 0 0
  • 工作了将近一年,感觉还是和社会格格不入,充满了自己的想法和棱角。不知是喜是悲。 下午,流动现场会检查学校。为了这场...
    夕观阅读 299评论 0 0
  • 小时候 喜欢仰望 我想天空是我的梦想 小时候 喜欢读书 我觉得知识就是力量 小时候 喜欢玩闹 我能享受汗水的味道 ...
    蜂蜜白柚阅读 226评论 0 0