UITextView实现placeholder的猥琐做法

我们都知道iOS开发中的UITextField有个placeholder属性,placeholder可以很方便引导用户输入。但是UITextView却没有placeholder属性

猥琐法分析

如何让UITextView也有placeholder功能呢?今天给各位分享一个比较猥琐的做法。思路大概是这样的:

  1. UITextViewtextplaceholder使用。
  2. 在开始编辑的代理方法里清除placeholder
  3. 在结束编辑的代理方法里在设置placeholder
  4. 实现方法

    创建UITextView

    UITextView *textViewPlaceholder = [[UITextView alloc] initWithFrame:CGRectMake(20, 70, SCREEN.width - 40, 100)];
    textViewPlaceholder.backgroundColor = [UIColor whiteColor];
    textViewPlaceholder.text = @"关注微信公众号iOS开发:iOSDevTip";
    textViewPlaceholder.textColor = [UIColor grayColor];
    textViewPlaceholder.delegate = self;
    [self.view addSubview:textViewPlaceholder];
    

    初始化UITextView,给UITextViewtext赋值,并且给UITextViewtextColor属性设置成灰色,让其看起来更像placeholder

    别忘了设置UITextView的代理,因为后面我们要用到UITextView的两个代理方法。

    开始编辑的代理方法

    - (void)textViewDidBeginEditing:(UITextView *)textView {
    
        if ([textView.text isEqualToString:@"关注微信公众号iOS开发:iOSDevTip"]) {
            textView.text = @"";
            textView.textColor = [UIColor blackColor];
        }
    }
    

    在开始编辑的代理方法里面,判断如果是UITextViewtext的值是placeholder,那么,就清空text,并且把textColor设置成真正的内容颜色,假设是黑色。

    结束编辑的代理方法

    - (void)textViewDidEndEditing:(UITextView *)textView {
        if (textView.text.length<1) {
            textView.text = @"关注微信公众号iOS开发:iOSDevTip";
            textView.textColor = [UIColor grayColor];
        }
    }
    

    在结束编辑的代理方法里,判断如果UITextViewtext值为空,那么,就要把需要设置的placeholder赋值给UITextViewtext,并且将textColor属性设置成灰色。

    添加轻击手势

    UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGesture:)];
    tapGesture.numberOfTapsRequired = 1; //点击次数
    tapGesture.numberOfTouchesRequired = 1; //点击手指数
    [self.view addGestureRecognizer:tapGesture];
    
    //轻击手势触发方法
    -(void)tapGesture:(UITapGestureRecognizer *)sender
    {
        [self.view endEditing:YES];
    }
    

    至此,就很猥琐的实现了placeholder功能。为了方便测试,我加了一个手势。作用是用键盘消失,这样可以测试结束编辑的时候placeholder会不会显示。

    我看了网上一些实现UITextViewplaceholder功能的更猥琐的做法,在UITextView上面盖一个UILabel,然后在UITextView的代理方法里控制UILabel的值。还有用两个UITextView实现的。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值