带PlaceHolder的UITextView
在日常开发中,用户反馈界面基本在每个App中都存在,如下图所示:
输入反馈建议的地方通常都是一个UITextView,但是比较蛋疼的地方就是UITextView并没有PlaceHolder属性。在这里,肯定有很多方式可以解决这个问题。我这里把我通常是在
- (void)textViewDidBeginEditing:(UITextView *)textView
和- (void)textViewDidEndEditing:(UITextView *)textView
这两个代理中去做处理。其实也很简单。
代码如下:
- (UITextView *)textView {
if (!_textView) {
_textView = [[UITextView alloc] init];
_textView.backgroundColor = [UIColor whiteColor];
_textView.delegate = self;
_textView.text = @"请输入遇到的问题或建议";
// 设置PlaceHolder的字体颜色
_textView.textColor = [UIColor xk_colorWithHexString:@"#CCCCD1"];
// 设置字体(里面的宏和常量是我项目中自己定义的)
_textView.font = FONT(xkfontSize * PROPORTION);
}
return _textView;
}
- (void)textViewDidBeginEditing:(UITextView *)textView {
// 在已经开始编辑的方法中判断如果当前textView.text为PlaceHolder的值 就将其值改变为空字符串
if ([textView.text isEqualToString:@"请输入遇到的问题或建议"]) {
textView.text = @"";
}
textView.textColor = [UIColor xk_colorWithHexString:kBTitleColor];
}
- (void)textViewDidEndEditing:(UITextView *)textView {
// 在结束编辑的时候去判断 如果没有输入文字 那么重新将PlaceHolder设置上,同时将text的颜色修改回来
if ([NSString isEmpty:textView.text]) {
textView.text = @"请输入遇到的问题或建议";
textView.textColor = [UIColor xk_colorWithHexString:@"#CCCCD1"];
}
}
这样,我们就简单的实现了一个带PlaceHolder的UITextView的。