JLChen
2021-10-08 f8457b624a75bf8e41489b74f66009eee6891b8b
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 (c) 2014年 LeChange. All rights reserved.
//
 
#import <LCBaseModule/UITextField+LeChange.h>
#import <objc/runtime.h>
#import <LCBaseModule/DHModuleConfig.h>
 
static char customClearKey;
 
 
@implementation UITextField (LeChange)
 
- (NSRange) selectedRange
{
    UITextPosition* beginning = self.beginningOfDocument;
    
    UITextRange* selectedRange = self.selectedTextRange;
    UITextPosition* selectionStart = selectedRange.start;
    UITextPosition* selectionEnd = selectedRange.end;
    
    const NSInteger location = [self offsetFromPosition:beginning toPosition:selectionStart];
    const NSInteger length = [self offsetFromPosition:selectionStart toPosition:selectionEnd];
    
    return NSMakeRange(location, length);
}
 
- (void) setSelectedRange:(NSRange) range
{
    UITextPosition* beginning = self.beginningOfDocument;
    
    UITextPosition* startPosition = [self positionFromPosition:beginning offset:range.location];
    UITextPosition* endPosition = [self positionFromPosition:beginning offset:range.location + range.length];
    UITextRange* selectionRange = [self textRangeFromPosition:startPosition toPosition:endPosition];
    
    [self setSelectedTextRange:selectionRange];
}
 
- (void)setSecureTextEntryWithBtn:(id)sender
{
    BOOL bShowState = ![self isSecureTextEntry];//获取状态
    [self setSecureTextEntry:bShowState];//设置状态
    [self setEnabled:YES];
    if (!bShowState)
    {
        [sender setBackgroundImage:[UIImage imageNamed:@"login_icon_openeye"] forState:UIControlStateNormal];
    }
    else
    {
        [sender setBackgroundImage:[UIImage imageNamed:@"login_icon_closeeye"] forState:UIControlStateNormal];
    }
}
 
- (void)setCustomClearButton:(BOOL)customClearButton
{
    objc_setAssociatedObject(self, &customClearKey, @(customClearButton), OBJC_ASSOCIATION_RETAIN_NONATOMIC);
    
    if (customClearButton) 
    {
        UIButton *clearButton = [self valueForKey:@"_clearButton"];
        [clearButton setImage:[UIImage imageNamed:@"common_listicon_s_empty"] forState:UIControlStateNormal];
        clearButton.imageEdgeInsets = UIEdgeInsetsMake(0, -10, 0, 0);
        self.clearButtonMode = UITextFieldViewModeWhileEditing;
    }
}
 
- (BOOL)customClearButton
{
    return [objc_getAssociatedObject(self, &customClearKey) boolValue];
}
 
-(void)clearHandleSingleTap:(UITapGestureRecognizer*)tap
{
    self.text = @"";
}
 
@end