iOS - textView上加Placeholder

一、使用KVC,查找textView内部变量

UITextView

1.新建UITextView的Category,命名为UITextView+PlaceHolder,.h和.m代码分别如下

#import <UIKit/UIKit.h>

@interface UITextView (Placeholder)

@property (nonatomic, copy) NSString *placeHolder;

@end

#import "UITextView+Placeholder.h"

@implementation UITextView (Placeholder)

- (void)setPlaceHolder:(NSString *)placeHolder {
    UILabel *placeHolderStr = [[UILabel alloc] init];
    placeHolderStr.text = placeHolder;
    placeHolderStr.numberOfLines = 0;
    placeHolderStr.textColor = [UIColor lightGrayColor];
    [placeHolderStr sizeToFit];
    [self addSubview:placeHolderStr];
    placeHolderStr.font = self.font;
    [self setValue:placeHolderStr forKey:@"_placeholderLabel"];
}

@end
2.调用时引入头文件后

- (void)textViewplaceHolderMethod {
    self.textView.layer.masksToBounds = YES;
    self.textView.layer.cornerRadius = 4;
    self.textView.layer.borderWidth = 0.5;
    self.textView.layer.borderColor = [UIColor blackColor].CGColor;
    self.textView.placeHolder = @"请留下您对我们的建议或意见";
}




二、(笨方法)使用textView/label充当placeHolder

1.具体思路:在UITextView的delegate方法中控制

self.textView.text = @"";
或者
self.placeHolderLabel.hidden = Yes;
2.具体代码(UITextView.text)

- (void)setupTextView {
    self.textView.delegate = self;
    self.textView.text = @"请输入您的建议";
    self.textView.textColor = [UIColor lightGrayColor];
    self.textView.layer.masksToBounds = YES;
    self.textView.layer.cornerRadius = 4;
    self.textView.layer.borderWidth = 0.5;
    self.textView.layer.borderColor = [UIColor blackColor].CGColor;
}

- (void)textViewDidBeginEditing:(UITextView *)textView {
    if ([textView.text isEqualToString:@"请输入您的建议"]) {
        self.textView.text = @"";
        self.textView.textColor = [UIColor blackColor];
    }
}

- (void)textViewDidEndEditing:(UITextView *)textView {
    if (textView.text.length == 0) {
        self.textView.text = @"请输入您的建议";
        self.textView.textColor = [UIColor lightGrayColor];
    }
}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
    [self.view endEditing:YES];
}




注:这个方法的缺点是当你输入 “请输入您的建议” 后,键盘失去响应后,在点击想继续输入的时候,原输入的  “请输入您的建议” 会消失,所以比较推荐方法一。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值