BATextField:UITextField 的分类,一行代码
2017-06-20 本文已影响183人
95c9800fdf47
BATextField
BAHome Team Name1、功能及简介
- 1、用分类封装 UITextField,代码无任何侵入更改
- 2、用 block 方式实现所需代理回调,更加方便,代码更简洁
- 3、一个属性搞定 最大长度限制
- 4、一个属性搞定 placeholder 字体、字体颜色
- 5、一行代码搞定 输入的内容是否为空
- 6、一行代码搞定 选中所有文字、选中指定范围的文字
- 7、一行代码搞定 输入历史记录
2、图片示例
BATextField3、安装、导入示例和源码地址
- 1、pod 导入【最新版本:
】:
pod 'BATextField'
如果发现pod search BATextField
搜索出来的不是最新版本,需要在终端执行 cd 转换文件路径命令退回到 desktop,然后执行pod setup
命令更新本地spec缓存(可能需要几分钟),然后再搜索就可以了。
具体步骤:- pod setup : 初始化
- pod repo update : 更新仓库
- pod search BATextField
- 2、文件夹拖入:下载demo,把 BATextField 文件夹拖入项目即可,
- 3、导入头文件:
#import "BATextField.h"
- 4、项目源码地址:
OC 版 :https://github.com/BAHome/BATextField
4、BATextField 的类结构及 demo 示例
BATextFieldBAKit_WebView.h
#ifndef BATextField_h
#define BATextField_h
#import "UITextField+BAKit.h"
#import "UITextField+BAHistory.h"
#import "BAKit_ConfigurationDefine.h"
#import "UIView+BAFrame.h"
#import "BAKit_UserDefaults.h"
/*!
*********************************************************************************
************************************ 更新说明 ************************************
*********************************************************************************
欢迎使用 BAHome 系列开源代码 !
如有更多需求,请前往:https://github.com/BAHome
项目源码地址:
OC 版 :https://github.com/BAHome/BAWKWebView
最新更新时间:2017-06-17 【倒叙】
最新Version:【Version:1.0.0】
更新内容:
1.0.0.1、用分类封装 UITextField,代码无任何侵入更改
1.0.0.2、用 block 方式实现所需代理回调,更加方便,代码更简洁
1.0.0.3、一个属性搞定 最大长度限制
1.0.0.4、一个属性搞定 placeholder 字体、字体颜色
1.0.0.5、一行代码搞定 输入的内容是否为空
1.0.0.6、一行代码搞定 选中所有文字、选中指定范围的文字
1.0.0.7、一行代码搞定 输入历史记录
*/
#endif /* BATextField_h */
UITextField+BAKit.h
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
@interface UITextField (BAKit)
/**
placeholder:文字颜色,默认:黑色
*/
@property(nonatomic, strong) UIColor *ba_placeholderColor;
/**
placeholder:文字字体
*/
@property(nonatomic, strong) UIFont *ba_placeholderFont;
/**
限制最大输入长度
*/
@property (assign, nonatomic) NSInteger ba_maxLength;
/**
判断 UITextField 输入的内容是否为空
@return YES,NO
*/
- (BOOL)ba_textField_isEmpty;
/**
选中所有文字
*/
- (void)ba_textField_selectAllText;
/**
当前选中的字符串范围
@return NSRange
*/
- (NSRange)ba_textField_selectedRange;
/**
选中指定范围的文字
@param range NSRange 范围
*/
- (void)ba_textField_setSelectedRange:(NSRange)range;
@end
UITextField+BAHistory.h
#import <UIKit/UIKit.h>
@interface UITextField (BAHistory)
/**
textFieldID:识别 ID,要用到历史记录,请务必添加
*/
@property(nonatomic, strong) NSString *ba_textFieldID;
/**
历史数据数组
*/
@property(nonatomic, readonly, strong) NSArray *ba_textFieldHistoryArray;
/**
clearButton 标题,默认:清楚历史内容
*/
@property(nonatomic, strong) NSString *ba_clearButtonTitle;
/**
clearButton 标题颜色,默认:[[UIColor blueColor] colorWithAlphaComponent:0.5f]
*/
@property(nonatomic, strong) UIColor *ba_clearButtonTitleColor;
/**
同步输入内容到 NSUserDefaults
*/
- (void)ba_textFieldHistoryArraySynchronize;
/**
显示 HistoryArray
*/
- (void)ba_textFieldHistoryArrayShow;
/**
隐藏 HistoryArray
*/
- (void)ba_textFieldHistoryArrayHide;
/**
清除 HistoryArray
*/
- (void)ba_textFieldHistoryArrayClear;
@end
demo 示例
// 示例1:
- (UITextField *)textField
{
if (!_textField)
{
_textField = [UITextField new];
_textField.placeholder = @"这里是 placeholder!限制最大位数:6!";
_textField.backgroundColor = BAKit_Color_Gray_11;
// placeholder:文字颜色
_textField.ba_placeholderColor = BAKit_Color_Green;
// placeholder:文字字体
_textField.ba_placeholderFont = [UIFont systemFontOfSize:11];
// 限制最大输入长度
_textField.ba_maxLength = 6;
[self.view addSubview:_textField];
}
return _textField;
}
// 示例2:加载普通 URL
- (UITextField *)textField1
{
if (!_textField1)
{
_textField1 = [UITextField new];
_textField1.placeholder = @"点击 return 后,可以保存输入历史!【限制输入11位】";
_textField1.backgroundColor = BAKit_Color_Gray_11;
_textField1.delegate = self;
// placeholder:文字颜色,默认:黑色
_textField1.ba_placeholderColor = BAKit_Color_Orange;
// placeholder:文字字体
_textField1.ba_placeholderFont = [UIFont boldSystemFontOfSize:13];
// 限制最大输入长度
_textField1.ba_maxLength = 11;
// textFieldID:识别 ID,要用到历史记录,请务必添加
_textField1.ba_textFieldID = @"user_account";
// clearButton 标题,默认:清楚历史内容
_textField1.ba_clearButtonTitle = @"clear";
// clearButton 标题颜色,默认:[[UIColor blueColor] colorWithAlphaComponent:0.5f]
_textField1.ba_clearButtonTitleColor = BAKit_Color_Green;
[self.view addSubview:_textField1];
}
return _textField1;
}
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
[self.view endEditing:YES];
[_textField1 ba_textFieldHistoryArrayHide];
}
#pragma mark - UITextFieldDelegate
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
if (_textField1 == textField)
{
// 当开始编辑的时候,显示 历史数据
[_textField1 ba_textFieldHistoryArrayShow];
return YES;
}
return NO;
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
if (_textField1 == textField)
{
// 点击 return,一定要记得 同步数据
[_textField1 ba_textFieldHistoryArraySynchronize];
// 同步完数据后,记得隐藏 历史数据
[_textField1 ba_textFieldHistoryArrayHide];
_textField1.text = nil;
[_textField1 resignFirstResponder];
return YES;
}
return NO;
}
其他示例可下载 demo 查看源码!
5、更新记录:【倒叙】
欢迎使用 【BAHome】 系列开源代码 !
如有更多需求,请前往:【https://github.com/BAHome】
最新更新时间:2017-06-17 【倒叙】
最新Version:【Version:1.0.0】
更新内容:
1.0.0.1、用分类封装 UITextField,代码无任何侵入更改
1.0.0.2、用 block 方式实现所需代理回调,更加方便,代码更简洁
1.0.0.3、一个属性搞定 最大长度限制
1.0.0.4、一个属性搞定 placeholder 字体、字体颜色
1.0.0.5、一行代码搞定 输入的内容是否为空
1.0.0.6、一行代码搞定 选中所有文字、选中指定范围的文字
1.0.0.7、一行代码搞定 输入历史记录
6、bug 反馈 和 联系方式
1、开发中遇到 bug,希望小伙伴儿们能够及时反馈与我们 BAHome 团队,我们必定会认真对待每一个问题!
2、联系方式
QQ群:479663605 【注意:此群为 2 元 付费群,介意的小伙伴儿勿扰!】
博爱QQ:137361770
博爱微博:
7、开发环境 和 支持版本
开发使用 Xcode Version 8.3.2 (8E2002) ,理论上支持所有 iOS 版本,如有版本适配问题,请及时反馈!多谢合作!
8、感谢
感谢 BAHome 团队成员倾力合作,后期会推出一系列 常用 UI 控件的封装,大家有需求得也可以在 issue 提出,如果合理,我们会尽快推出新版本!
BAHome 的发展离不开小伙伴儿的信任与推广,再次感谢各位小伙伴儿的支持!