forked from YousicianGit/UnityNativeEdit
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPlaceholderTextView.m
More file actions
128 lines (99 loc) · 3.08 KB
/
Copy pathPlaceholderTextView.m
File metadata and controls
128 lines (99 loc) · 3.08 KB
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#import "PlaceholderTextView.h"
#import "EditBox_iOS.h"
@interface PlaceholderTextView ()
@property (unsafe_unretained, nonatomic, readonly) NSString* realText;
- (void) beginEditing:(NSNotification*) notification;
- (void) endEditing:(NSNotification*) notification;
@end
@implementation PlaceholderTextView
@synthesize realTextColor;
@synthesize placeholder;
@synthesize placeholderColor;
#pragma mark -
#pragma mark Initialisation
- (id) initWithFrame:(CGRect)frame {
if ((self = [super initWithFrame:frame])) {
[self awakeFromNib];
}
return self;
}
- (void)awakeFromNib {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(beginEditing:) name:UITextViewTextDidBeginEditingNotification object:self];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(endEditing:) name:UITextViewTextDidEndEditingNotification object:self];
self.realTextColor = self.textColor;
self.placeholderColor = [UIColor lightGrayColor];
}
#pragma mark -
#pragma mark Setter/Getters
- (void) setPlaceholder:(NSString *)aPlaceholder {
if ([self.realText isEqualToString:placeholder] && ![self isFirstResponder]) {
self.text = aPlaceholder;
}
if (aPlaceholder != placeholder) {
placeholder = aPlaceholder;
}
[self endEditing:nil];
}
- (void)setPlaceholderColor:(UIColor *)aPlaceholderColor {
placeholderColor = aPlaceholderColor;
if ([super.text isEqualToString:self.placeholder]) {
self.textColor = self.placeholderColor;
}
}
- (NSString *) text {
NSString* text = [super text];
if ([text isEqualToString:self.placeholder]) return @"";
return text;
}
- (void) setText:(NSString *)text {
if (([text isEqualToString:@""] || text == nil) && ![self isFirstResponder]) {
super.text = self.placeholder;
}
else {
super.text = text;
}
if ([text isEqualToString:self.placeholder] || text == nil) {
self.textColor = self.placeholderColor;
}
else {
self.textColor = self.realTextColor;
}
}
- (NSString *) realText {
return [super text];
}
- (void) beginEditing:(NSNotification*) notification {
if ([self.realText isEqualToString:self.placeholder]) {
super.text = nil;
self.textColor = self.realTextColor;
}
}
- (void) endEditing:(NSNotification*) notification {
if ([self.realText isEqualToString:@""] || self.realText == nil) {
super.text = self.placeholder;
self.textColor = self.placeholderColor;
}
}
- (void) setTextColor:(UIColor *)textColor {
if ([self.realText isEqualToString:self.placeholder]) {
if ([textColor isEqual:self.placeholderColor]){
[super setTextColor:textColor];
} else {
self.realTextColor = textColor;
}
}
else {
self.realTextColor = textColor;
[super setTextColor:textColor];
}
}
-(void) SetEditbox:(NSObject*)box
{
_editBox = box;
}
#pragma mark -
#pragma mark Dealloc
- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
@end