前言
实际开发中,往往需要处理UITextView、UITextField输入的限制。比如输入必须是价格格式(一个小数点、小数点后面最多两位);输入最大长度限制;对输入内容的实时回调。处理这些的时候,我们通常需要做一些繁琐重复的工作。
这里献上本人写的一个小工具,提前声明,这个工具主要是提供一种提高效率解决思路,更多的正则表达式还是得自行添加。
用法
将YBInputLimit文件夹拖入工程(注意不要拖到最外层的文件夹)
导入文件 #import "UIView+YBInputLimit.h"
注意:由于是UIView的分类,同时适用于UITextView、UITextField
//* 一句代码实现(链式语法的使用)
[textfield setYBInputLimit:YBInputLimitModel
.initialization
.setInputLimitType(YBInputLimitType_numbers|YBInputLimitType_lettersSmall)
.setMaxLength(10)
.setTextChanged(^(id observe){
})];
//* 常规实现
YBInputLimitModel *model = [YBInputLimitModel new];
model.inputLimitType = YBInputLimitType_numbers|YBInputLimitType_lettersSmall;
model.maxLength = 10;
[model setTextChanged:^(id observe){
}];
[textfield setYBInputLimit:model];
如果你不喜欢使用block,可以使用下面这种方法
[textfield setYBInputLimit:YBInputLimitModel
.initialization
.setInputLimitType(YBInputLimitType_numbers|YBInputLimitType_lettersSmall)
.setMaxLength(10)
.addTargetAndAction(self, @selector(sel0:))];
YBInputLimitModel *model = [YBInputLimitModel new];
model.inputLimitType = YBInputLimitType_numbers|YBInputLimitType_lettersSmall;
model.maxLength = 10;
[model addTargetOfTextChange:self action:@selector(sel0:)];
[textfield setYBInputLimit:model];
如果大家有更多的需求,可以自行添加YBInputLimitType枚举值,并且实现,当然,也可以直接传入正则表达式字符串:
//* 直接输入正则
[textfield setYBInputLimit:YBInputLimitModel.initialization.setRegularStr(@"^[0-9]+$")];
作者:indulge_in
链接:http://www.jianshu.com/p/bd70c24a7021
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。