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
//
// GMPlaceholderTextContainer.m
// Gengmei
//
// Created by wangyang on 16/1/5.
// Copyright © 2016年 Wanmeichuangyi. All rights reserved.
//
#import "GMPlaceholderTextContainer.h"
#import <Masonry/Masonry.h>
//#import "NSString+GM.h"
#import "GMFont.h"
#import <UIColor+GMTheme.h>
#import <Constant.h>
@implementation GMPlaceholderTextContainer
- (void)setup
{
[super setup];
_placeholderOrigin = CGPointMake(6, 7);
_textView = [UITextView new];
_textView.font = [UIFont gmFont:15];
[self addSubview:_textView];
_placeholderLabel = [GMLabel labelWithTextColor: UIColor.disable fontSize:15];
_placeholderLabel.backgroundColor = [UIColor clearColor];
[self addSubview:_placeholderLabel];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textViewDidChange) name:UITextViewTextDidChangeNotification object:nil];
}
- (void)updateConstraints{
[_textView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.insets(UIEdgeInsetsZero);
}];
[_placeholderLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(_textView.mas_top).offset(_placeholderOrigin.y);
make.left.equalTo(_textView.mas_left).offset(_placeholderOrigin.x);
}];
[super updateConstraints];
}
- (void)dealloc{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
- (void)textViewDidChange{
NSMutableCharacterSet *emptyStringSet = [[NSMutableCharacterSet alloc] init];
[emptyStringSet formUnionWithCharacterSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]];
[emptyStringSet formUnionWithCharacterSet: [NSCharacterSet characterSetWithCharactersInString: @" "]];
if ([_textView.text length] == 0) {
_placeholderLabel.hidden = NO;
}
NSString* str = [_textView.text stringByTrimmingCharactersInSet:emptyStringSet];
_placeholderLabel.hidden = [str length] > 0;
}
#pragma mark - 重写
- (BOOL)becomeFirstResponder{
[_textView becomeFirstResponder];
return YES;
}
- (BOOL)resignFirstResponder{
[_textView resignFirstResponder];
return [super resignFirstResponder];
}
#pragma mark - Setter、Getter
- (NSString *)text{
return _textView.text;
}
- (void)setText:(NSString *)text {
_textView.text = text;
[self textViewDidChange];
}
- (NSString *)placeholder {
return _placeholderLabel.text;
}
- (void)setPlaceholder:(NSString *)placeholder {
_placeholderLabel.text = placeholder;
}
@end