关于iOS UITextView的一点使用心得,设置placeHolder效果
来源:互联网 发布:域名和网址有什么区别 编辑:程序博客网 时间:2024/05/21 19:34
前言:最近做了一个论坛发帖的功能,由于文字的输入较多,所以我选择了UITextView。大家都知道现在testView没有textField那样的提示(place Holder)功能,可是产品就要那个效果,所以憋出了这篇博客---- 给textView添加placeHolder效果
基本思路:在textView的第一行添加一个label,用label来提示起到place Holder的效果,当textview里面有文字的时候,让textview覆盖在label上面(背景色为白色),当textView里面的文字为空的时候,把textview的背景色透明,漏出label的文字。这里面用到了textView的代理方法
- (void)textViewDidChange:(UITextView *)textView;当然了我们为了控制用户输入的不全是空格还可以用textview的其他代理:
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text;
- (void)textViewDidEndEditing:(UITextView)textView;不啰嗦,上代码⬇️⬇️
1、先初始化textView
//初始化-(void)setTextView{ //设置placeHolder UILabel *placeHolderLabel=[[UILabel alloc]initWithFrame:CGRectMake(18, 250, 100, 30)]; placeHolderLabel.text=@"标题(必填)"; placeHolderLabel.font=[UIFont systemFontOfSize:15]; placeHolderLabel.textAlignment=NSTextAlignmentLeft; placeHolderLabel.textColor=[UIColor colorWithRed:136.0/255 green:136.0/255 blue:136.0/255 alpha:1]; [self.view addSubview:placeHolderLabel]; //设置textView CGRect titleFrame=CGRectMake(15, 250, 345, 200); UITextView *titleView=[[UITextView alloc]init]; titleView.frame=titleFrame; titleView.font=[UIFont systemFontOfSize:15]; titleView.textColor=[UIColor blackColor]; titleView.backgroundColor=[UIColor clearColor];//默认颜色 透明,直接显示提示内容 titleView.returnKeyType=UIReturnKeyDone; titleView.delegate=self;//记得声明代理 [self.view addSubview:titleView];}2、实现代理方法
//显示提示的placeHolder,如果输入的全是空格- (void)textViewDidEndEditing:(UITextView *)textView;{//关于字符串的拼接删除方法都在NSString类里面,大家自行查阅 NSString *stringWithoutSpace; stringWithoutSpace=[textView.text stringByReplacingOccurrencesOfString:@" " withString:@""]; if (stringWithoutSpace.length==0) { textView.text=@""; textView.backgroundColor=[UIColor clearColor]; }}//字数限制- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text;{ if ([text isEqualToString:@"\n"]) {//按下return键 //这里隐藏键盘,不做任何处理 [textView resignFirstResponder]; return NO; } NSString *toBeString = textView.text; UITextRange *selectedRange = [textView markedTextRange]; //获取高亮部分 UITextPosition *position = [textView positionFromPosition:selectedRange.start offset:0]; // 没有高亮选择的字,则对已输入的文字进行字数统计和限制 if (!position) { if (toBeString.length >= 200 && ![text isEqualToString:@""]&&textView.tag==201510233) { return NO; } } return YES;}
//实时监控输入框的内容
- (void)textViewDidChange:(UITextView *)textView;{ //显示隐藏placeholder if(textView.text.length>0) { textView.backgroundColor=[UIColor whiteColor]; } if (textView.text.length==0) { textView.backgroundColor=[UIColor clearColor]; } }
基本上这样我们就可以实现想要的效果了,当然了可能还有别的更简单的方法来实现。
以上仅代表我个人的想法,望大家多多指正,好方法可共享,新手文档,高手勿喷!
0 0
- 关于iOS UITextView的一点使用心得,设置placeHolder效果
- ios UITextView placeHolder效果
- UITextView设置类似placeholder的效果
- ios UITextView的placeHolder的设置
- iOS开发:设置UITextView的placeholder
- 实现UITextView的placeholder效果
- UITextView设置placeholder的方法
- iOS 实现UITextView的placeholder
- ios UITextView的placeholder属性实现
- iOS UITextView 实现placeholder的方法
- IOS 一个带有placeholder的UITextView
- iOS 实现 UITextView placeHolder的占位文字
- 关于UITextField和UITextView的placeholder
- UITextView placeholder 设置
- iOS-UITextView设置行间距,内容颜色(变相设置类似UITextField的placeholder)
- IOS UITextView加上placeholder
- iOS UITextView加上placeholder
- IOS UITextView加上placeholder
- 常用正则表达式转载
- JSON详细了解-(重在理解,不在手把手教你怎么用)
- virsh的详细命令解析
- IOS解析JSON数据格式错误一
- 2种方法解决mysql主从不同步
- 关于iOS UITextView的一点使用心得,设置placeHolder效果
- VMware vCenter 5.5搭建手册
- jquery mobile显示加载提示,并自动消失
- 优秀源码下载网站
- 有人向我提了一个 Bug,说 5 分钟就可以搞定
- 【Java并发编程】之六:Runnable和Thread实现多线程的区别(含代码)
- JavaScript 打印调用堆栈
- laravel 表单验让
- mysql数据库所有表字符替换PHP代码