JLChen
2021-05-18 a869383e163a18cdedcf587383c1eca043129754
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
//
//  Copyright © 2016年 dahua. All rights reserved.
//
 
#import <UIKit/UIKit.h>
 
typedef void (^LCTextFieldMsgBlock)(NSString *checkingMsg);
 
typedef void (^LCTextFieldInputBlock)(NSString *result);
typedef BOOL (^LCTextFieldInputingBlock)(NSString *result,NSString *replace);
 
typedef void (^LCTextFieldTextChangedBlock)(NSString *text);
 
typedef enum : NSUInteger {
    LCTextFieldMenuTypeCanNone = 0,
    LCTextFieldMenuTypeCanCopy = 1 << 0,
    LCTextFieldMenuTypeCanPaste = 1 << 1,
    LCTextFieldMenuTypeCanSelect = 1 << 2,
    LCTextFieldMenuTypeCanSelectAll = 1 << 3
} LCTextFieldMenuType;
 
NS_CLASS_AVAILABLE_IOS(7_0) @interface LCTextField : UITextField <UITextFieldDelegate>
 
/*!
 *  @author han_dong, 16-02-23 14:02:52
 *
 *  @brief 限制输入
 */
//@property (nonatomic, assign) BOOL          isMenuItemsEnable; //默认YES. 是否支持长按弹出编辑菜单
@property (nonatomic, assign) BOOL isRuled;            //默认NO. 输入是否受限
@property (nonatomic, assign) BOOL disableEmoji;       //输入内容禁止emoji表情, 默认为YES
@property (nonatomic, assign) BOOL disableSpace;       //输入内容禁止全角半角空格符\竖直水平制表符\回车换行换页符等所有空白符, 默认为NO
@property (nonatomic, assign) BOOL disableSpecialChar; //输入内容禁止特殊符号, 默认为NO
@property (nonatomic, assign) BOOL disableUnderRegEx;
@property (nonatomic, assign) NSUInteger chineseStrLength;
//默认一个中文算2字节,如有特别需求,可在外部自定义。影响可输入的字节长度。
//允许进行的操作
@property (nonatomic, assign) LCTextFieldMenuType menuType;
// storybord中可以使用的属性
@property (nonatomic, assign) IBInspectable BOOL isSetOneTimeCode;
 
///Warning:⚠️⚠️⚠️,已废弃
@property (nonatomic, assign) BOOL isMenuHidden;
 
/// 居中模式下,text在X方向的偏移量,负值向左,正值向右
@property (nonatomic, assign) CGFloat textOffsetWhenInAlignmentCenter;
 
/*!
 *  @author han_dong, 16-02-23 14:02:31
 *
 *  @brief 校验输入
 */
@property (nonatomic, assign) BOOL isChecking;          //默认为NO. 输入时是否校验
@property (nonatomic, assign) BOOL checkOnTextChanged;  //输入框内容发生变化时, 动态校验, 默认为NO
@property (nonatomic, assign) BOOL checkOnResign;       //输入完成后(更改FirstResponder), 后置校验, 默认为NO
@property (nonatomic, assign) unsigned int strLengthCustom;  //自定义输入长度
 
/// 文字变化的block,上层需要注意循环引用!!!
@property (nonatomic, copy) LCTextFieldTextChangedBlock textChanged;
/// 回调代码块
@property (copy, nonatomic) LCTextFieldInputingBlock inputingBlock;
 
 
- (void)lc_setInputRuleWithRegEx:(NSString *)stringRegEx andInputLength:(unsigned int)inputLength; //自定义正则表达式字符串. 限制内容及长度. 调用该方法后, 默认将isRuledByRegEx状态置为YES
 
- (void)lc_addRegExToCheckTextField:(NSString *)strRegEx withMsgBlock:(LCTextFieldMsgBlock)msgBlock; //自定义正则表达式, 调用时默认将isChecking状态置为YES
 
- (void)lc_addConfirmValidationToCheckTextField:(LCTextField *)targetTextField withMsgBlock:(LCTextFieldMsgBlock)msgBlock; //用于校验输入确认密码, 调用时默认将isChecking状态置为YES
 
- (void)lc_setBlankMsgBlock:(LCTextFieldMsgBlock)block; //设置空内容提醒
 
- (BOOL)lc_checkIt; //检验方法, 开放外部调用.
 
+ (instancetype)lcTextFieldWithResult:(void(^)(NSString *result))result;
 
 
@end