iOS-自定义TextField(解决输入限制,键盘弹出问题)

Demo截屏

  • 项目由来,最近我开发的项目中,存在很多输入框,它们都有输入限制,比如帐号(限制6位)、密码(限制16位)、手机号(限制只输入数字,11位)、身份证号(限制只输入数字和字母,18位),金额(限制浮点数)、备注(限制200字)等,类似的输入框还有很多,刚开始我使用UITextField,再加上限制用户输入又是很麻烦的事情,所以一遇到有输入框的vc,就会有大量的限制代码,并且很多都是重复的。在这种情况下,我考虑封装一个TextField,用于解决限制用户输入的功能,顺便在把键盘弹出的问题也解决了
  • 所以CCTextField的主要功能,它能一行代码解决输入限制问题,并且内部处理键盘弹出问题
  • 项目地址:https://github.com/cdcyd/CCTextField 有兴趣的最好把Demo下载看看
  • CCTextField 用法 CCTextField 继承自UITextField,所以它和UITextField的用法一样,我们只需要多设置一个属性 typedef NS_ENUM(NSInteger, CCCheckType){ CCCheckNone, // 不做校验 CCCheckAccount, // 帐号(字母开头,允许字母、数字、下划线,长度在6个以上) CCCheckPassword, // 密码(以字母开头,只能包含字母、数字和下划线,长度在6个以上) CCCheckStrongPassword, // 强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在6个以上) CCCheckEmail, // 邮箱 CCCheckZipCode, // 邮编 CCCheckDomain, // 域名 CCCheckPhone, // 手机号 CCCheckIDCard, // 身份证(18位) CCCheckFloat, // 浮点数(校验格式: "10"、"10.0") CCCheckDate, // 日期(校验格式: "xxxx-xx-xx"、"xxxx-x-x") CCCheckMoney, // 金额(校验格式: "10000.0"、"10,000.0"、"10000"、"10,000") CCCheckTel, // 座机(校验格式: "xxx-xxxxxxx"、"xxxx-xxxxxxxx"、"xxx-xxxxxxx"、"xxx-xxxxxxxx"、"xxxxxxx"、"xxxxxxxx") }; @property(nonatomic, assign)CCCheckType check; 在checksetter方法中,还设置了键盘类型、长度限制等,如果对键盘和输入限制与setter方法设置的不符,则可以在设置check属性之后,再设置键盘类型和长度限制,设置长度限制可以通过下面两个属性设置,但一定要在check之后设置,不然可能会有问题 @property(nonatomic, assign)NSInteger minLimit; @property(nonatomic, assign)NSInteger maxLimit; 所以 CCTextField *textField = [[CCTextField alloc] initWithFrame:CGRectMake(0, 0, 200, 30)]; // 设置输入类型 textField.check = CCCheckPhone; // 设置文字最小长度 // textField.minLimit = 0; // 设置文字最大长度 // textField.maxLimit = 16;

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏繁花云

12-01-js深入学习

问题表现是:httpd服务器已经开启了,端口也已经监听了,但是就是无法访问

550
来自专栏liulun

学习WPF——元素绑定

概念 从源对象提取一些信息,并用这些信息设置目标对象的属性 示例 image.png image.png 数据绑定表达式使用XAML的标记扩展(因此具有花括号)...

2156
来自专栏极客生活

数据分析Excel技能之自动填充

将光标移动到选中的单元格的右下角的那个节点上光标会变成实心加号。然后可以上下左右拖动光标就会自动填充当前单元格中的内容。 根据当前单元格中的内容格式不同,ex...

1013
来自专栏LIN_ZONE

Vue 中动态添加class(使用v-bind:class)

今天在Vue中动态修改类名,元素的样式就是不改变,类名也没有加上去,里面的问题具体我还是不太清楚,有可能是因为自己不认真,把 :class= 后面的内容的格式给...

3602
来自专栏轮子工厂

课后习题答案

这个是一个很经典的 C 语言入门编程题,可以通过刚刚所讲的循环嵌套来实现,如果将每个表达式看成 i * j,那么第一行是 i = 1,j <= i,第二行是i ...

791
来自专栏Golang语言社区

厚土Go学习笔记 | 19. slice和数组很像,但是slice可以添加元素

slice中文可以称为“切片”。是Go语言为处理同类型数据序列提供的一个高效且方便的方式。是在数组上抽象的一个数据类型。 切片的使用相当的广泛。 切片可以直接赋...

3777
来自专栏web前端教室

[视频直播]本周日先行者视频“React多级菜单

第一个知识点,就是递归。 递归往简单了说,就是函数不断调用自身,同时设定一个退出条件,达成条件就结束调用自身,否则就成无限递归了。 看一小段JSON: { ...

2099
来自专栏前端架构与工程

【翻译】JavaScript内存泄露

我们在进行JavaScript开发时,很少会考虑内存的管理。JavaScript中变量的声明和使用看起来是一件很轻松的事,底层的细节处理交给浏览器去做就好了。 ...

2506
来自专栏企鹅号快讯

不到200行 JavaScript 代码如何实现富文本编辑器

作者:吴锴 http://www.wukai.me/2017/12/31/rich-text-editor-in-less-than-200-lines-jav...

2097
来自专栏魂祭心

原 利用Appdomain动态加载程序集,

3618

扫码关注云+社区