首页 > 代码库 > 自定义UITextView实现placeholder效果
自定义UITextView实现placeholder效果
今天项目中有一个界面需要通过UITextView实现,并且具有UITextField的placeholder功能,自己昨晚之后觉得蛮有趣的,拿出来分享一下.
先放最终效果完成图:
具体思路就是创建一个UITextView,然后在其上面添加一个UILable,并通过UITextView的代理方法监听其内容的改变,来判断UILable是否需要隐藏.
代码如下:
1 UITextView *textView = [[UITextView alloc] init];//创建一个textView2 [self.view addSubview:textView];//添加到需要显示的界面上面3 textView.delegate = self;//设置textView的代理,方便后续使用代理方法监听textView内容的改变4 self.textView = textView;//设置为全局变量5 textView.frame = CGRectMake(10, 20, 300, 260);//设置frame6 textView.layer.borderColor = [UIColor grayColor].CGColor;//给textView添加一个边框,需要导入QuartzCore框架7 textView.layer.borderWidth = 1;//设置边框线宽8 textView.layer.cornerRadius = 5.0f;//设置圆角9 textView.returnKeyType = UIReturnKeyDone;//设置键盘右下角按键内容
创建完毕之后可以在textView内部添加一个UILable作为placeholder.
1 UILabel *lable = [[UILabel alloc] initWithFrame:CGRectMake(5, 5, 300, 20)];//创建lable并设置frame2 self.lable = lable;3 lable.enabled = NO;//禁止lable可以改变,必须设置4 lable.text = @"不超过200字,详细说明你拥有的技能与特长";//设置内容5 lable.font = [UIFont systemFontOfSize:13];//设置字体大小6 lable.textColor = [UIColor grayColor];//设置字体颜色为灰色7 lable.backgroundColor = [UIColor clearColor];//清楚背景颜色8 [textView addSubview:lable];//添加到UITextView上面
此时,我们已经在UITextView上面添加了一行lable用作placeholder,若要其像UITextField那样输入的时候隐藏,没有内容的时候显示,还需要调用UITextView的代理方法:
- (void)textViewDidChange:(UITextView *)textView{ self.lable.text = textView.text; if (textView.text.length == 0) { self.lable.text = @"不超过200字,详细说明你拥有的技能与特长"; }else{ self.lable.text = @""; }}
到了现在自定义的UITextView已经有模有样了,但是仍不完美,因为键盘无法退出,可以通过以下代码完成:
1 -(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString*)text2 {3 if ([text isEqualToString:@"\n"]) {4 [self.textView resignFirstResponder];5 return NO;6 }7 return YES;8 }
自定义UITextView实现placeholder效果
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。