看到过网上一些博文说是利用两个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