• iOS&UITextView中的placeholder属性


    一看标题,就很屌丝!

    的确,系统不给咱们,那咱们就自己弄!

    具体步骤:

      1,创建一个类,继承UITextView.取名ZHHTextView;

      2,在drawRect:中实现placeholder,其中用到通知来监听text的change.

    大概的步骤就着两步,具体实现,看代码.<一行代码解千言>

    现在将.m文件代码公布如下:

    #import "ZHHTextView.h"

    @implementation ZHHTextView

    - (instancetype)initWithFrame:(CGRect)frame {

        if (self = [super initWithFrame:frame]) {

            NSLog(@"%s",__func__);

            //注册通知.要用到通知的用意:监听内容的变化

            [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(viewTextChange) name:UITextViewTextDidChangeNotification object:nil];

        }

        return self;

    }

    - (void)viewTextChange {

        // 执行此方法,系统自动调用drawRect:方法

        [self setNeedsDisplay];

        

        NSLog(@"%s",__func__);

        

    }

    - (void)dealloc {

        //取消通知,你不取消试试,看你的项目会不会崩

        [[NSNotificationCenter defaultCenter] removeObserver:self];

    }

    // Only override drawRect: if you perform custom drawing.

    // An empty implementation adversely affects performance during animation.

    - (void)drawRect:(CGRect)rect {

        // Drawing code

        

        // 如果有内容,则返回

        if (self.hasText)return;

        

        // 给placeholder添加属性

        NSMutableDictionary *attributes = [NSMutableDictionary dictionary];

        //这里最好还是要与self.font同步

        attributes[NSFontAttributeName] = [UIFont systemFontOfSize:15.0];

        attributes[NSForegroundColorAttributeName] = [UIColor grayColor];

        

        // 其实placeholder是画上去的,既然是画上去的,必须给定具体的位置与尺寸

        CGFloat x = 15;

        CGFloat w = rect.size.width - 2 * x;

        CGFloat y = 12;

        CGFloat h = rect.size.height - 2 * y;

        CGRect placeholderRect = CGRectMake(x, y, w, h);

        NSString* placeholder = @"请输入鸿歌的QQ...";

     // 这个方法很经典

        [placeholder drawInRect:placeholderRect withAttributes:attributes];

    }

    @end

    OK了.

  • 相关阅读:
    web开发之web 验证码--- webqq 机器人
    赛星软件---智能视频分析事件检测
    模式识别之双目立体视觉---双目立体视觉相关介绍
    安卓项目之微信公众好---初体验
    《数学分析》视频
    单目和双目模式识别---游戏控制
    多媒体开发之音频编码---ffmpeg 编码aac
    PC如何访问手机网址
    linux shell实现守护进程 看门狗 脚本
    grep用法详解:grep与正则表达式
  • 原文地址:https://www.cnblogs.com/iOS771722918/p/4479793.html
Copyright © 2020-2023  润新知