关于 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}区,查询条件格式{& ...
随机推荐
- 关于finfo_file函数获取文件mime值验证出错的问题
今天在做图片上传 验证图片mime值时 突然发现 个别特殊情况下finfo_file 获取的MIME值不能直接使用, 依照官方的写法是 $finfo=finfo_open(FILEINFO_MIME ...
- 线程安全使用(四) [.NET] 简单接入微信公众号开发:实现自动回复 [C#]C#中字符串的操作 自行实现比dotcore/dotnet更方便更高性能的对象二进制序列化 自已动手做高性能消息队列 自行实现高性能MVC WebAPI 面试题随笔 字符串反转
线程安全使用(四) 这是时隔多年第四篇,主要是因为身在东软受内网限制,好多文章就只好发到东软内部网站,懒的发到外面,现在一点点把在东软写的文章给转移出来. 这里主要讲解下CancellationT ...
- Oracle oledb 打包并集成到程序安装包(VC ADO訪问Oracle)
近期有一个项目和oracle交互,我用的是ADO的方式进行试问操作. 首先把数据库连接的东东记录一下,老了记性不好啊! 操作例如以下: //连接串这么写的话就能够不用配置 tnsnames.ora配置 ...
- Django-content—type
Django包含一个contenttype应用,它可以追踪安装在你的Django项目里的所有的应用,并提供一个高层次的,通用的接口用于与你的模型进行交互 Contenttypes 的核心应用是Cont ...
- Linux 操作系统中的进程结构
前言 在 Linux 中,一个正在执行的程序往往由各种各样的进程组成,这些进程除了父子关系,还有其他的关系.依赖于这些关系,所有进程构成一个整体,给用户提供完整的服务( 考虑到了终端,即与用户的交互 ...
- 图像处理之滤波---gabor
http://blog.csdn.net/xiaowei_cqu/article/details/24745945 小魏北大
- Leetcode 002-Search Insert Position
#Given a sorted array and a target value, return the index if the target is found. If not, return th ...
- Topcoder SRM 638 DIV 2 (大力出奇迹)
水题,就是一个暴力.大力出奇迹. Problem Statement There is a narrow passage. Inside the passage there are some wo ...
- Erlang Shell调试网络程序真方便
Erlang的shell功能强大,这里我将它当成我的客户端.可以动态的输入你需要发送的内容,也可以动态的接收内容,就像调试器一样,在开发过程中起到很重要的作用.具体使用方式如下: C:\Documen ...
- SAM4E单片机之旅——5、LED呼吸和PWM
PWM在高频情况下,一个很好的用处就是通过控制占空比来控制输出的功率,比如控制风扇转速.LED灯的亮度等.这次就利用PWM的中断功能,动态改变脉冲的占空比,来实现呼吸灯的效果. 一.实现思路 PWM可 ...