关于 jwTextFiled 的使用说明
我在些项目中多次对一些输入框做了相同的代码操作,终于有一天忍不住了,MD必须写一个小的框架解决这个搬砖的问题。经过一天的战斗,于是 jwTextFied 就默默的诞生了。
地址:https://github.com/NIUXINGJIAN/jwTextFiled.git
使用它的好处:节省代码,简化操作,凸显 ViewController 内部逻辑。
如何使用它:
a: 进入gitHub 地址,然后下载它。
b: 将demo中 jwTextFiled 文件夹导入工程。
c: 在使用的地方引入头文件 #import "jwTextFiled.h" 即可,耦合度相当低。
d: 查阅 jwTextFiled_Example 使用步骤。
解析:
一个 Categorie ,没错就是一个 UITextFiled 的类扩展,我们将所有的输入框类型的校验写在该扩展中,同时具有较强的定制性。
一个黑框提示的封装,做为提示效果之一。
一个多按钮的提示框的引入,作为可以定制的提示效果之一。
jwTextFiled 可以帮你做什么?
0、使用极少的代码实现对一个或者一组输入框的输入长度做输入限制。
1、支持输入框类型为:用户名,密码,验证码,交易金额,身份证,银行卡,手机号,邮箱,信用卡有效期,信用卡安全码输入框正则校验,根据需要你可以自行扩展修改。
2、支持错误校验规则:详见代码内部正则注释。
3、提示类型:不提示,默默校验;校验并且提示(支持系统提示,黑框提示,用户自定义提示)
4、提示内容:通过函数传值,能够对校验失败,和输入框为空的时候进行提示。
5、对输入框当前输入内容的回调,通过一次遍历,能够得到所有输入框及时的输入信息。
6、封装倒计时控件,采用target-action设计思想很好的解决了多次重发的问题。
7、引入反馈页面使用的效果 UIPlaceholderTextView 文件。
8、自动获取输入框的内容,能够帮助你做一些你想做的事情:效果如下 code
//如,短信验证码页面,初始化了jwTextFiled 设置后,当进入该页面后,自动获取验证码成功后,验证码输入框智能获取焦点,键盘出现,页面自动偏移,当输入够6位的时候,输入框取消焦点,键盘消失,页面回复原来位置。
-(void)intelligentSwitchInputBox:(BOOL)isOpen{ if (isOpen) { _smCode_TF.tempBlock = ^(UITextField *TF,NSString *TF_STR){ if (TF == _smCode_TF) {// 验证码长度为6自动回收键盘 if ( == [TF_STR length] ) { [TF resignFirstResponder];
[_scrolview setContentOffset:CGPointMake(, ) animated:YES]; }else{ [TF becomeFirstResponder];
[_scrolview setContentOffset:CGPointMake(, + ) animated:YES]; }
}
}; }
}
9、改良自定义输入框辅助工具,新增自动获取用户输入焦点的方法,在VC中仅需一行代码,实现页面的输入框的智能切换焦点。{设计实现:如果输入长度达到最大长度就按照输入框的数组由上到下的去自动获取焦点,使用场景,多于三个输入框的页面}。
实例代码:[_smCode_TF jw_AutoGetFocusTfAry:_tfAry start:0];
定制性:
用户可以在框架的内部去通过修改宏定义去设置输入框的最大输入长度限制。
用户可以修改调整输入框的校验方法去对某些输入框进行校验设置。
注意:
金额输入框输入规则:
1、首位输入小数点,自动前面补0。
2、只能输入一位小数点,若连续两次输入小数点,禁止第二个输入。
3、小数位只能有两位,多余输入自动禁止。
4、输入金额限制的最后一位的时候如果是小数点,就进行提示,并删除小数点。
身份证输入框输入规则:
1、最多能输入18位。
2、如果最后以为是小写x,则自动转化为大写 X。
3、对18位长度的身份证号码做了组成身份证算法校验。
其他这里不再一一概述。
【注意**】
未能解决的bug:
*在输入中文的时候,由系统键盘的文字联想效果导致的输入不准确。
//
// AddBankCardViewController.m
// xxxxx
//
// Created by Mac_NJW on 16/9/18.
// Copyright © 2016年 Mac_NJW. All rights reserved.
// // 校验错误
#define K_ERROR_HOLDNAME @"持卡人姓名输入错误!"
#define K_ERROR_IDCARD @"身份证号码格式不正确!"
#define K_ERROR_BANKCARD @"银行卡号格式不正确!"
#define K_ERROR_PHONENUM @"手机号码格式不正确!" // 校验位空
#define K_NULL_HOLDNAME @"持卡人姓名不能为空!"
#define K_NULL_IDCARD @"身份证号码不能为空!"
#define K_NULL_BANKCARD @"银行卡号不能为空!"
#define K_NULL_PHONENUM @"银行预留手机号不能为空!" #import "AddBankCardViewController.h"
#import "jwTextField.h" @interface AddBankCardViewController ()
{
NSArray *_tfAry;
}
@end @implementation AddBankCardViewController - (void)viewDidLoad {
[super viewDidLoad]; [self initWithUi]; } - (void)initWithUi{ [self setTitle:@"绑定银行卡"]; // 及时监听输入内容
_tfAry = @[_hold_Name_TF,_idCard_TF,_bankCardNo_TF,_phone_TF];
// 设置类型
[_hold_Name_TF jwTextFiledType:TEXTFIELD_TYPE_LOGIN_U];
[_idCard_TF jwTextFiledType:TEXTFIELD_TYPE_IDCARD];
[_bankCardNo_TF jwTextFiledType:TEXTFIELD_TYPE_BANKRD];
[_phone_TF jwTextFiledType:TEXTFIELD_TYPE_PHONE]; for (UITextField *textFiled in _tfAry) {
// 及时监听
textFiled.tempBlock = ^(UITextField *TF,NSString *TF_STR){ NSLog(@"\n\n 及时检测到您输入的内容为 %@",TF_STR);
if (TF.textFiled_Type == TEXTFIELD_TYPE_IDCARD) { NSLog(@"\n\n 系统检测到您正在输入身份证号码!\n");
}
};
} } - (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
} #pragma mark——————— 下一步按钮点击事件
- (IBAction)nextBtnClickAct:(UIButton *)sender { // 轮询校验
_tfAry = @[_hold_Name_TF,_idCard_TF,_bankCardNo_TF,_phone_TF];
NSArray *_errorAry = @[K_ERROR_HOLDNAME,K_ERROR_IDCARD,K_ERROR_BANKCARD,K_ERROR_PHONENUM];
NSArray *_nilAry = @[K_NULL_HOLDNAME,K_NULL_IDCARD,K_NULL_BANKCARD,K_NULL_PHONENUM];
BOOL is_ok = [_hold_Name_TF pollingCheckTextFiled:_tfAry isHaveBox:ISHAVE_BOX_TYPE_YES haveBoxTitles:_errorAry nullWarTitles:_nilAry withBoxType:WARING_BOX_TYPE_BLACKBX keepara:@"YES"];// 如果是 @"YES" 就是开启错误定位
if (is_ok) { NSLog(@"\n\n 所有输入合法,可以继续执行逻辑!\n");
}else{ NSLog(@"\n\n 检测到有不合法输入,不可以继续执行逻辑!\n");
}
} /*
#pragma mark - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/ @end
关于 jwTextFiled 的使用说明的更多相关文章
- Atitit.项目修改补丁打包工具 使用说明
Atitit.项目修改补丁打包工具 使用说明 1.1. 打包工具已经在群里面.打包工具.bat1 1.2. 使用方法:放在项目主目录下,执行即可1 1.3. 打包工具的原理以及要打包的项目列表1 1. ...
- awk使用说明
原文地址:http://www.cnblogs.com/verrion/p/awk_usage.html Awk使用说明 运维必须掌握的三剑客工具:grep(文件内容过滤器),sed(数据流处理器), ...
- “我爱背单词”beta版发布与使用说明
我爱背单词BETA版本发布 第二轮迭代终于画上圆满句号,我们的“我爱背单词”beta版本已经发布. Beta版本说明 项目名称 我爱背单词 版本 Beta版 团队名称 北京航空航天大学计算机学院 拒 ...
- Oracle 中 union 和union all 的简单使用说明
1.刚刚工作不久,经常接触oracle,但是对oracle很多东西都不是很熟.今天我们来了解一下union和union all的简单使用说明.Union(union all): 指令的目的是将两个 S ...
- Map工具系列-02-数据迁移工具使用说明
所有cs端工具集成了一个工具面板 -打开(IE) Map工具系列-01-Map代码生成工具说明 Map工具系列-02-数据迁移工具使用说明 Map工具系列-03-代码生成BySQl工具使用说明 Map ...
- Map工具系列-03-代码生成BySQl工具使用说明
所有cs端工具集成了一个工具面板 -打开(IE) Map工具系列-01-Map代码生成工具说明 Map工具系列-02-数据迁移工具使用说明 Map工具系列-03-代码生成BySQl工具使用说明 Map ...
- jQuery验证控件jquery.validate.js使用说明
官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation jQuery plugin: Validation 使用说明 转载 ...
- gdbsever 使用说明
gdbsever 使用说明 在新塘N3292x平台下 编译 gdbsever ./configure --target=arm-linux --host=arm-linux arm-linux-gdb ...
- mongoVUE的增删改查操作使用说明
mongoVUE的增删改查操作使用说明 一. 查询 1. 精确查询 1)右键点击集合名,再左键点击Find 或者直接点击工具栏上的Find 2)查询界面,包括四个区域 {Find}区,查询条件格式{& ...
随机推荐
- java要在命令行执行eclipse的项目的方法
在命令行运行eclipse的项目时须要把该项目生成一个能够运行的jar包,才干够在命令行下运行:分为两种情况,一种是项目中没有调用第三方的jar包,这样的比較简单.网上的资源也非常多,本文主要讲述第二 ...
- oracle insert/update
insert into table (,,) values (,,) where update table set (,)=(select , from ) where
- Laravel 5.4建站06--API 认证系统 Passport
介绍 在 Laravel 中,实现基于传统表单的登陆和授权已经非常简单,但是如何满足 API 场景下的授权需求呢?在 API 场景里通常通过令牌来实现用户授权,而非维护请求之间的 Session 状态 ...
- 1.新手上路:Windows下,配置Qt环境
个人体会: 我最初只是想看看C++除了"黑窗口"之外,怎么才能做一些"更好看的东西".之后在网上看到有人推荐Qt,就看了一下官网(https://www.qt. ...
- Spring Boot实现STOMP协议的WebSocket
关注公众号:锅外的大佬 每日推送国外优秀的技术翻译文章,励志帮助国内的开发者更好地成长! WebSocket协议是应用程序处理实时消息的方法之一.最常见的替代方案是长轮询(long polling)和 ...
- kubernetes高级之创建只读文件系统以及只读asp.net core容器
系列目录 使用docker创建只读文件系统 容器化部署对应用的运维带来了极大的方便,同时也带来一些新的安全问题需要考虑.比如黑客入侵到容器内,对容器内的系统级别或者应用级别文件进行修改,会造成难以估量 ...
- 热烈庆祝UE4完全免费Free---GitHub的关联方式
热烈庆祝UE4完全免费Free---GitHub的关联方式 时间:2015-03-03 18:38:52 阅读:3007 评论:0 收藏:0 [点我收藏+] 标 ...
- ffmpeg api升级到3.3 api变化
void av_free_packet(AVPacket * pkt) Use void av_packet_unref(AVPacket * pkt) Wipe the packet. Unref ...
- ios 博客集合
ryantang03 http://blog.csdn.net/ryantang03/article/category/1073221 kmyhy http://blog.csdn.net ...
- WPF学习专题
http://developer.51cto.com/art/200809/88207.htm