【iOS开发】设置textView的默认提示文字,也就是textView变相的"placeholder"。
来源:互联网 发布:备案过的域名转让 编辑:程序博客网 时间:2024/06/06 15:37
【iOS开发】设置textView的默认提示文字,有需要的朋友可以参考下。
原文:http://www.aichengxu.com/view/40341最近项目中需要用到textView,但是在用的时候才发现原来textView没有类似于textField的那种placeholder功能。
所谓placeholder就比如用户看到一个输入框,然后输入框里面一般会有几个浅灰色的文字,告诉用户这个地方是用来写什么内容的,当用户开始输入的时候,这几个文字就自然而然地消失了。这几个文字就是'Placeholder'。
网上搜了一下,有一种方式是使用代理;在.m文件中实现textview delegate的两个方法:
(BOOL) textViewShouldBeginEditing:(UITextView *)textView{ if(textView.tag == 0) { textView.text = @""; textView.textColor = [UIColor blackColor]; textView.tag = 1; } return YES;}- (void)textViewDidChange:(UITextView *)textView{ if([textView.text length] == 0) { textView.text = @"Foobar placeholder"; textView.textColor = [UIColor lightGrayColor]; textView.tag = 0; }}
Tip:使用textView的代理需要在头文件中加入: <UITextViewDelegate>
这种方法确实可以实现我们想要的功能,但是有一个很明显的bug:如果用户输入了几个字以后,想全部删除了重新输入内容,那就会发现你永远都没法删除干净,因为当你把最后一个字后,textViewDidChange方法就监测到textView.text的 length = 0了 于是就会自动帮你不上你想要显示的placeholder。。。可以脑补下那个画面,疯狂地删除,却怎么也删不干净。
然后就采用了另外的方法,就是添加一个label,这个label里面写入你想要显示的placeholder,然后还是在textViewDidChange方法里面,如果当前的text长度为0,就把label显示出来,否则的话,就把Label隐藏了。
把我的程序里面和这部分内容相关的摘出来吧:
.h文件
@interface FeedbackViewController : UIViewController<UITextViewDelegate,UIAlertViewDelegate>@propert(strong,nonatomic) IBOutlet UITextView *textView;@end
viewDidLoad函数:
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. label = [[UILabel alloc]initWithFrame:CGRectMake(3, 3, 200, 20)]; label.enabled = NO; label.text = @"在此输入反馈意见"; label.font = [UIFont systemFontOfSize:15]; label.textColor = [UIColor lightGrayColor]; [self.textView addSubview:label];}初始化的时候把label的内容设置一下。注意这个label是添加在textView里面的,我调试了一下 起始位置(3,3)是个还算不错的位置。注意要把label设置成不可点击。
textView的代理:
//TextView Delegate- (void) textViewDidChange:(UITextView *)textView{ if ([textView.text length] == 0) { [label setHidden:NO]; }else{ [label setHidden:YES]; }}
0 0
- 【iOS开发】设置textView的默认提示文字,也就是textView变相的"placeholder"。
- 【iOS开发】设置textView的默认提示文字
- 【iOS开发】设置textView的默认提示文字
- iOS设置textView的placeholder
- 设置textView的placeholder
- iOS 一、设置textView的placeholder
- ios 自定义带占位文字(placeholder)的TextView
- iOS---自定义带占位文字placeholder的TextView
- TextView的文字设置
- iOS开发之UITextView,设置textView的行间距及placeholder
- iOS开发之UITextView,设置textView的行间距及placeholder
- iOS开发之UITextView,设置textView的行间距及placeholder
- iOS开发之UITextView,设置textView的行间距及placeholder
- iOS开发之UITextView,设置textView的行间距及placeholder
- iOS开发之UITextView,设置textView的行间距及placeholder
- iOS开发之UITextView,设置textView的行间距及placeholder
- iOS开发之UITextView,设置textView的行间距及placeholder
- iOS开发之UITextView,设置textView的行间距及placeholder
- 改变myspl的编码环境为UTF-8
- 使用session对象的简易购物车
- java from 表单提交中文乱码
- 【转】xstream的使用介绍(javabean和xml互转)
- NAPT和UDP hole punching
- 【iOS开发】设置textView的默认提示文字,也就是textView变相的"placeholder"。
- iOS入门(三十六) 初级数据持久化
- hdu 5373 - The shortest problem 解题报告
- HDU 1159 Common Subsequence(动态规划)
- IOS 友盟页面数据统计学习
- TreeMap中文排序
- shell脚本参数
- jquery 对 Json 的各种遍历
- 美国金融学博士项目和申请介绍