关于 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}区,查询条件格式{& ...
随机推荐
- 使用 Navicat 8.0 管理mysql数据库(导出导入数据)
http://dxcns.blog.51cto.com/1426423/367105 使用Navicat For MySql 将mysql中的数据导出,包括数据库表创建脚本和数据 (1)数据的导出:右 ...
- x264 编码数配置
记录项目中用到一组x264快速编码参数配置,具体如下: param->i_frame_reference = 1; param->i_scenecut_threshold = 0; par ...
- OpenGL 与 GLSL 版本号
来自:https://github.com/mattdesl/lwjgl-basics/wiki/GLSL-Versions You can use the #version command as t ...
- Gson解析数组和list容器
Gson解析数组和list容器 使用Gson解析首先须要增加架包文件:gson-2.2.4.jar 定义一个类Student: public class Student { String name=& ...
- 宜人贷蜂巢API网关技术解密之Netty使用实践
一.背景 宜人贷蜂巢团队,由Michael创立于2013年,通过使用互联网科技手段助力金融生态和谐健康发展.自成立起一直致力于多维度数据闭环平台建设.目前团队规模超过百人,涵盖征信.电商.金融.社交. ...
- 【百度之星初赛A】路径交 LCA+线段树
[百度之星初赛A]路径交 Problem Description 给定一棵n个点的树,以及m条路径,每次询问第L条到第R条路径的交集部分的长度(如果一条边同时出现在2条路径上,那么它属于路径的交集). ...
- IP address could not be resolved: Name or service not known
[root@test ~]# /usr/local/mysql/bin/mysqld2018-08-05T07:00:33.647509Z 0 [Warning] [MY-011070] [Serve ...
- Ubuntu搜狗输入法候选词乱码
打开Fcitx Configuration,进入Addon标签 选中Simplified Chinese To Traditional Chinese Convert Simplified ...
- 微信小程序开发:学习笔记[9]——本地数据缓存
微信小程序开发:学习笔记[9]——本地数据缓存 快速开始 说明 本地数据缓存是小程序存储在当前设备上硬盘上的数据,本地数据缓存有非常多的用途,我们可以利用本地数据缓存来存储用户在小程序上产生的操作,在 ...
- 我所认为的KVC和KVO
引子: 为什么要写这个,只是突然一个念头闪现,说一下本人目前理解.KVC: Key-value coding,它是一种使用字符串标识符,间接访问对象属性的机制.但是关就这一 ...