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

相关文章

来自专栏张善友的专栏

Miguel de Icaza 细说 Mix 07大会上的Silverlight和DLR

Mono之父Miguel de Icaza 详细报道微软Mix 07大会上的Silverlight和DLR ,上面还谈到了Mono and Silverligh...

2707
来自专栏Ceph对象存储方案

Luminous版本PG 分布调优

Luminous版本开始新增的balancer模块在PG分布优化方面效果非常明显,操作也非常简便,强烈推荐各位在集群上线之前进行这一操作,能够极大的提升整个集群...

3105
来自专栏跟着阿笨一起玩NET

c#实现打印功能

2702
来自专栏张善友的专栏

Mix 10 上的asp.net mvc 2的相关Session

Beyond File | New Company: From Cheesy Sample to Social Platform Scott Hansel...

2547
来自专栏张善友的专栏

LINQ via C# 系列文章

LINQ via C# Recently I am giving a series of talk on LINQ. the name “LINQ via C...

2635
来自专栏菩提树下的杨过

Flash/Flex学习笔记(23):运动学原理

先写一个公用的小球类Ball: package{ import flash.display.Sprite; //小球 类 public class B...

25210
来自专栏大内老A

The .NET of Tomorrow

Ed Charbeneau(http://developer.telerik.com/featured/the-net-of-tomorrow/) Exciti...

31410
来自专栏魂祭心

原 canvas绘制clock

4054
来自专栏落花落雨不落叶

canvas画简单电路图

60811
来自专栏pangguoming

Spring Boot集成JasperReports生成PDF文档

由于工作需要,要实现后端根据模板动态填充数据生成PDF文档,通过技术选型,使用Ireport5.6来设计模板,结合JasperReports5.6工具库来调用渲...

1.2K7

扫码关注云+社区