美文网首页iOS 开发A知识点2
【iOS开发】设置textView的默认提示文字

【iOS开发】设置textView的默认提示文字

作者: 梁景华Joshua_ | 来源:发表于2016-04-25 01:47 被阅读2035次

【iOS开发】设置textView的默认提示文字,有需要的朋友可以参考下。

最近项目中需要用到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的代理需要在头文件中加入:

这种方法确实可以实现我们想要的功能,但是有一个很明显的bug:如果用户输入了几个字以后,想全部删除了重新输入内容,那就

会发现你永远都没法删除干净,因为当你把最后一个字后,textViewDidChange方法就监测到textView.text的 length =

0了 于是就会自动帮你不上你想要显示的placeholder。。。可以脑补下那个画面,疯狂地删除,却怎么也删不干净。

然后就采用了另外的方法,就是添加一个label,这个label里面写入你想要显示的placeholder,然后还是在textViewDidChange方法里面,如果当前的text长度为0,就把label显示出来,否则的话,就把Label隐藏了。

把我的程序里面和这部分内容相关的摘出来吧:

.h文件

@interface FeedbackViewController : UIViewController

@propert(strong,nonatomic) IBOutlet UITextView *textView;

@end

.m文件

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];

}

}```

相关文章

  • 【iOS开发】设置textView的默认提示文字

    【iOS开发】设置textView的默认提示文字,有需要的朋友可以参考下。 最近项目中需要用到textView,但...

  • UITextView

    TextView的属性使用和代理方法使用 iOS开发中遇到要写textview的提示文字 写这些东西要用到tex...

  • Mac开发-NSTextView

    在iOS中对TextView的设置直接用就好了,但是在mac os开发中只设置textView是不可用的(因为无法...

  • UITextView动态适应高度

    首先设置textView不能滚动, 设置textview的文字,富文本文字同样可以

  • 2019-06-10

    博客园 首页 新随笔 跟为textView设置提示性文字一样 需要在textView的代理方法中实现如下 如有...

  • Android设置TextView

    1.设置TextView文字居中 2.设置textview控件在整个布局中居中 3.设置TextView文字上下距...

  • TextView设置ttf格式字体

    开发中有时会涉及到给TextView设置字体,TextView在xml中有自带设置字体样式的属性: 自带有四种文字...

  • Swift Tip4

    1、iOS 开发textView不能从顶部显示: 2.WKWebView清除缓存: 3.webView设置缓存策略...

  • UITextField - 输入框

    基本属性 简单定义 提示文字 placeholder :默认的提示文字是与设置输入文字字体一致,颜色深灰色,att...

  • Android设置应用内文字的默认颜色和大小

      有时候我们会遇到这些的问题: 在不给TextView或者Button中的文字设置默认颜色时,改变Applica...

网友评论

    本文标题:【iOS开发】设置textView的默认提示文字

    本文链接:https://www.haomeiwen.com/subject/onwfrttx.html