自定义UITextField实现编辑输入框时里面文字颜改变

简介

本文要实现的效果是当编辑TextField输入框的时候,里面的文字颜色和占位文字颜色不一样,达到一个提醒的效果。在默认情况下,UITextField里面的的文字在输入文字的时候颜色是不会改变的。这个时候可以通过runtime来实现效果。

效果图

  • 没有设置之前的效果


    没有设置之前的效果
  • 设置之后的效果


    设置之后点击输入框文字颜色改变了

运行时(runtime)

在动手之前先简单了解runtime的概念:

  • 苹果官方的一套C语言库
  • 能做很多底层操作(比如访问隐藏的一些成员变量、成员方法。。。)

步骤

  1. 重写awakeFromNib,在里面用KVC设置站位文字颜色、
  2. 通过becomeFirstResponder和resignFirstResponder方法进行监听光标所在文本输入框,实现占位文字颜色和光标颜色改变

完整代码

- (void)awakeFromNib{
    
    [super awakeFromNib];
    // 修改占位文字颜色
    UILabel * palceholderLabel = [self valueForKeyPath:@"_placeholderLabel"];
    palceholderLabel.textColor = [UIColor grayColor];
    
    
    // 设置光标颜色和文字颜色一致
    self.tintColor = [UIColor whiteColor];

    // 不成为第一响应者
    [self resignFirstResponder];

}
/**
 * 当前文本框聚焦的时候就会调用
 */
- (BOOL)becomeFirstResponder{
    
    //修改占位文字颜色
    UILabel * palceholderLabel = [self valueForKeyPath:@"_placeholderLabel"];
    palceholderLabel.textColor = [UIColor whiteColor];
    
    return [super becomeFirstResponder];
}

/**
 * 当前文本框取消聚焦的时候调用
 */
- (BOOL)resignFirstResponder{
    
      //修改占位文字颜色
    UILabel * palceholderLabel = [self valueForKeyPath:@"_placeholderLabel"];
    palceholderLabel.textColor = [UIColor grayColor];
    
    return [super resignFirstResponder];
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容