标签:
在iOS中,一般textfield可以显示一航文字,有placeholder(占位符,用来显示提示信息),textView可以显示多行文字但是却没有placeholder这项,下面的方法可以解决这个问题。
@interface PersonSetViewController ()<UITextViewDelegate>
//遵从代理协议
- (void)viewDidLoad {
[super viewDidLoad];
//放在底部的两个用于显示placeholder的textView,将它们设置为不可编辑
[_farmNameTextView setEditable:NO];
[_farmDiscribeTextView setEditable:NO];
//放在上面的两个用于用户输入的textView,设置self为代理
self.farmNameTView.delegate =self;
self.farmDiscrebeTView.delegate =self;
}
//用来实现的方法
-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{
if(![text isEqualToString:@""]) //如果text不为空,那么隐藏下面的两个textView
{
[_farmNameTextView setHidden:YES];
[_farmDiscribeTextView setHidden:YES];
}
//如果字符为空并且光标在第一位,并且没有字符的时候,那么显示下面两个textView
if([text isEqualToString:@""] && range.length==1 && range.location==0){
[_farmNameTextView setHidden:NO];
[_farmDiscrebeTView setHidden:NO];
}
//如果遇到\n(回车键),那么收起键盘
if ([text isEqualToString:@"\n"]) {
[textView resignFirstResponder];
return NO; //状态为不编辑
}
return YES; //状态为编辑
}
//当出现键盘的时候,需要把原来的view向上移动,用动画实现效果
//开始编辑
-(void)textViewDidBeginEditing:(UITextView *)textView{
[UIView beginAnimations:nil context:nil]; //动画开始
[UIView setAnimationDuration:0.2];//动画时长0.2秒
[UIView setAnimationBeginsFromCurrentState:YES]; //设置动画从当前状态开始
self.dataScrollView.frame=CGRectMake(0, 0, CGRectGetWidth(self.dataScrollView.frame), CGRectGetHeight(self.dataScrollView.frame)); //设置编辑状态下view的frame
[UIView commitAnimations]; //提交动画
}
//结束编辑
-(void)textViewDidEndEditing:(UITextView *)textView{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.2];
[UIView setAnimationBeginsFromCurrentState:YES];
self.dataScrollView.frame=CGRectMake(0, 133, CGRectGetWidth(self.dataScrollView.frame), CGRectGetHeight(self.dataScrollView.frame)); //设置非编辑状态下view的frame
[UIView commitAnimations];
}
标签:
原文地址:http://www.cnblogs.com/lv14/p/5009594.html