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 条评论
登录 后参与评论

相关文章

来自专栏jianhuicode

学问Chat UI(2)

前言 上文讲了下要去做哪些事,重点分析了融云Sdk中RongExtension这个扩展控件,本文来学习下同样是融云Sdk中的AutoRefreshListVie...

1896
来自专栏Ldpe2G的个人博客

Graphviz4S ---- 在Scala中使用DOT语言绘图的开源工具

之前需要在Scala中用到类似python的graphviz库的功能,用来在Mxnet中可视化网络结构,

1354
来自专栏更流畅、简洁的软件开发方式

使用接口来统一控件的取值、赋值和初始化

      这里说的控件主要指的是文本框、下拉列表框这一类的控件,用户使用这些控件输入数据,然后我们需要提取这些数据进行处理。但是不同的控件有不同的取值方式,比...

1866
来自专栏Golang语言社区

JS游戏开发 可移动地图的实现

一、前言 这一讲的内容很简单,大家理解起来会更快。因此我只对重点加以分析,其他的就轮到大家思考哦!首先来说,我对游戏开发可以算是不怎么深入,因为现在的程序员爱用...

4376
来自专栏软件开发

HTML5 学习总结(二)——HTML5新增属性与表单元素

一、HTML5新增属性 1.1、contextmenu contextmenu的作用是指定右键菜单。 <!DOCTYPE html> <html> <h...

1807
来自专栏影子

关于SpringMVC中如何把查询数据全转成String类型

3359
来自专栏知道一点点

【原创】bootstrap框架的学习 第六课[bootstrap代码]

请确保当您使用 <pre> 和 <code> 标签时,开始和结束标签使用了 unicode 变体: &lt; 和 &gt;。

813
来自专栏每日一篇技术文章

Swift3.0 - 空间命名

思考: 我们如果能够更加直观的知道SocketConnectFailure 是哪一类消息呢?

710
来自专栏GIS讲堂

lzugis——Arcgis Server for JavaScript API之POI

POI(Point Of Interest),感兴趣点,其实呢,严格意义上说应该不是POI,但是单位就这样叫了,我也就这样叫了,其实现的功能大致是这样的:用过百...

562
来自专栏PHP技术

window对象

窗口大小 outerWidth和outerHeight返回浏览器窗口本身的尺寸。 通过document.compatMode来确定页面是否处于标准模式。 对于移...

31210

扫码关注云+社区