簡介
本文要實現(xiàn)的效果是當(dāng)編輯TextField輸入框的時候,里面的文字顏色和占位文字顏色不一樣,達(dá)到一個提醒的效果。在默認(rèn)情況下,UITextField里面的的文字在輸入文字的時候顏色是不會改變的。這個時候可以通過runtime來實現(xiàn)效果。
效果圖
-
沒有設(shè)置之前的效果
沒有設(shè)置之前的效果 -
設(shè)置之后的效果
設(shè)置之后點擊輸入框文字顏色改變了
運行時(runtime)
在動手之前先簡單了解runtime的概念:
- 蘋果官方的一套C語言庫
- 能做很多底層操作(比如訪問隱藏的一些成員變量、成員方法。。。)
步驟
- 重寫awakeFromNib,在里面用KVC設(shè)置站位文字顏色、
- 通過becomeFirstResponder和resignFirstResponder方法進(jìn)行監(jiān)聽光標(biāo)所在文本輸入框,實現(xiàn)占位文字顏色和光標(biāo)顏色改變
完整代碼
- (void)awakeFromNib{
[super awakeFromNib];
// 修改占位文字顏色
UILabel * palceholderLabel = [self valueForKeyPath:@"_placeholderLabel"];
palceholderLabel.textColor = [UIColor grayColor];
// 設(shè)置光標(biāo)顏色和文字顏色一致
self.tintColor = [UIColor whiteColor];
// 不成為第一響應(yīng)者
[self resignFirstResponder];
}
/**
* 當(dāng)前文本框聚焦的時候就會調(diào)用
*/
- (BOOL)becomeFirstResponder{
//修改占位文字顏色
UILabel * palceholderLabel = [self valueForKeyPath:@"_placeholderLabel"];
palceholderLabel.textColor = [UIColor whiteColor];
return [super becomeFirstResponder];
}
/**
* 當(dāng)前文本框取消聚焦的時候調(diào)用
*/
- (BOOL)resignFirstResponder{
//修改占位文字顏色
UILabel * palceholderLabel = [self valueForKeyPath:@"_placeholderLabel"];
palceholderLabel.textColor = [UIColor grayColor];
return [super resignFirstResponder];
}

