iOS学习笔记--如何为UITextView设置placeholder

看到过网上一些博文说是利用两个textview来实现,并且实现textview的代理方法- (BOOL)textView:(UITextView )textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString )text,但是,除此之外,还可以利用UITextField来实现,实现的代理方法是:- (BOOL)textField:(UITextField )textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString )string,具体的代码实现如下,下列代码,可以直接拷贝到工程中进行验证。

方法一:
利用两个UITextView来实现placeholder效果,使用代理方法:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text。
// 第一个textview,放在最底层
self.textV_01 = [[UITextView alloc] initWithFrame:CGRectMake(100, 100, 200, 150)];
    self.textV_01.backgroundColor = [UIColor whiteColor];
    [self.view addSubview:_textV_01];
UITextView alloc] initWithFrame:CGRectMake(0, 0, 200, 100)];

// 第二个textview,放在第一个textview的上面
    self.textV_02.text = @"哈哈哈hak";
    self.textV_02.backgroundColor = [UIColor whiteColor];
    self.textV_02.textColor = [UIColor grayColor];
    self.textV_02.delegate = self;
    [self.textV_01 addSubview:_textV_02];

// 实现的代理方法
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    if (![text isEqualToString:@""]) {
        [self.textV_02 setHidden:YES];
    }
    if ([text isEqualToString:@""] && range.length == 1 && range.location == 0) {
        [self.textV_02 setHidden:NO];
    }
    if ([text isEqualToString:@"\n"]) {
        [textView resignFirstResponder];
        return NO;
    }
    [self.textV_01 becomeFirstResponder];
    return YES;
}

方法二:
利用UITextView和一个UITextField来实现效果,利用代理方法:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
// 第一个textview,放在最底层,同上面一样,只是在这个textView上面放了一个UITextField,而不是一个textview而已
self.textV_01 = [[UITextView alloc] initWithFrame:CGRectMake(100, 100, 200, 150)];
    self.textV_01.backgroundColor = [UIColor whiteColor];
    [self.view addSubview:_textV_01];

// 放在textview上的UITextField
self.TF = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 200, 30)];
    self.TF.delegate = self;
    self.TF.placeholder = @"hahahaad";
    [self.textV_01 addSubview:self.TF];

// 要实现的代理方法
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if (![string isEqualToString:@""]) {
        [self.TF setHidden:YES];
    }
    if ([string isEqualToString:@""] && range.length == 1 && range.location == 0) {
        [self.TF setHidden:NO];
    }
    [textField resignFirstResponder];
    [self.textV_01 becomeFirstResponder];
    return NO;
}

相关的参考,可以看下面两篇博文:
http://www.open-open.com/lib/view/open1423122301732.html
http://www.cnblogs.com/mantgh/p/4272619.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值