GCPlaceholderTextView.m
2.94 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
//
// GCPlaceholderTextView.m
// GCLibrary
//
// Created by Guillaume Campagna on 10-11-16.
// Copyright 2010 LittleKiwi. All rights reserved.
//
#import "GCPlaceholderTextView.h"
@interface GCPlaceholderTextView ()
@property (nonatomic, retain) UIColor *realTextColor;
@property (nonatomic, readonly) NSString *realText;
- (void) beginEditing:(NSNotification*) notification;
- (void) endEditing:(NSNotification*) notification;
@end
@implementation GCPlaceholderTextView
@synthesize realTextColor;
@synthesize placeholder;
#pragma mark -
#pragma mark Initialisation
- (id) initWithFrame:(CGRect)frame {
if ((self = [super initWithFrame:frame])) {
[self awakeFromNib];
}
return self;
}
- (void)awakeFromNib {
[super awakeFromNib];
self.realTextColor = [UIColor blackColor];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(beginEditing:) name:UITextViewTextDidBeginEditingNotification object:self];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(endEditing:) name:UITextViewTextDidEndEditingNotification object:self];
}
#pragma mark Setter/Getters
- (void)setPlaceholder:(NSString *)Placeholder{
if ([self.realText isEqualToString:Placeholder]) {
self.text = Placeholder;
}
placeholder = Placeholder;
[self endEditing:nil];
}
//- (void) setPlaceholder:(NSString *)placeholder {
// if ([self.realText isEqualToString:placeholder]) {
// self.text = placeholder;
// }
// placeholder = placeholder;
// [self endEditing:nil];
//}
- (NSString *) text {
NSString* text = [super text];
if ([text isEqualToString:self.placeholder]) return @"";
return text;
}
- (void) setText:(NSString *)text {
if ([text isEqualToString:@""] || text == nil) {
super.text = self.placeholder;
}
else {
super.text = text;
}
if ([text isEqualToString:self.placeholder]) {
self.textColor = [UIColor lightGrayColor];
}
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 = [UIColor lightGrayColor];
}
}
- (void) setTextColor:(UIColor *)textColor {
if ([self.realText isEqualToString:self.placeholder]) {
if ([textColor isEqual:[UIColor lightGrayColor]]) [super setTextColor:textColor];
else self.realTextColor = textColor;
}
else {
self.realTextColor = textColor;
[super setTextColor:textColor];
}
}
#pragma mark - dealloc
- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
@end