首先新建一個繼承自UITextFiled的類,在.m文件中導(dǎo)入<objc/runtime.h>,并定義靜態(tài)的變量儲存UITextFiled的內(nèi)部屬性作為Key值。
static NSString * const PlacerholderColorKeyPath = @"_placeholderLabel.textColor";
重寫以下方法
- (void)awakeFromNib
{
//? ? UILabel *placeholderLabel = [self valueForKeyPath:@"_placeholderLabel"];
//? ? placeholderLabel.textColor = [UIColor redColor];
//? ? // 修改占位文字顏色,利用kvc改變屬性值
//? ? [self setValue:[UIColor grayColor] forKeyPath:@"_placeholderLabel.textColor"];
// 設(shè)置光標顏色和文字顏色一致
self.tintColor = self.textColor;
// 不成為第一響應(yīng)者
[self resignFirstResponder];
}
/**
* 當前文本框聚焦時就會調(diào)用
*/
- (BOOL)becomeFirstResponder
{
// 修改占位文字顏色
[self setValue:self.textColor forKeyPath:PlacerholderColorKeyPath];//占位文字顏色和輸入的文字顏色一樣
return [super becomeFirstResponder];
}
/**
* 當前文本框失去焦點時就會調(diào)用
*/
- (BOOL)resignFirstResponder
{
// 修改占位文字顏色
[self setValue:[UIColor grayColor] forKeyPath:PlacerholderColorKeyPath];
return [super resignFirstResponder];
}
在需要用改變texeFiled的占位文字和光標顏色時竹习,只需要繼承這個自己寫的類就可以了。