带PlaceHolder的UITextView

带PlaceHolder的UITextView

在日常开发中,用户反馈界面基本在每个App中都存在,如下图所示:

带PlaceHolder的UITextView_第1张图片
屏幕快照 2017-05-12 下午3.58.11.png

输入反馈建议的地方通常都是一个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的。

带PlaceHolder的UITextView_第2张图片
效果图.gif

你可能感兴趣的:(带PlaceHolder的UITextView)