自定义UITextField实现编辑输入框时里面文字颜改变
2017-05-08 本文已影响73人
NotFunGuy
简介
本文要实现的效果是当编辑TextField输入框的时候,里面的文字颜色和占位文字颜色不一样,达到一个提醒的效果。在默认情况下,UITextField里面的的文字在输入文字的时候颜色是不会改变的。这个时候可以通过runtime来实现效果。
效果图
-
没有设置之前的效果
没有设置之前的效果
-
设置之后的效果
设置之后点击输入框文字颜色改变了
运行时(runtime)
在动手之前先简单了解runtime的概念:
- 苹果官方的一套C语言库
- 能做很多底层操作(比如访问隐藏的一些成员变量、成员方法。。。)
步骤
- 重写awakeFromNib,在里面用KVC设置站位文字颜色、
- 通过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];
}