自定義UITextField實現(xiàn)編輯輸入框時里面文字顏改變

簡介

本文要實現(xiàn)的效果是當(dāng)編輯TextField輸入框的時候,里面的文字顏色和占位文字顏色不一樣,達(dá)到一個提醒的效果。在默認(rèn)情況下,UITextField里面的的文字在輸入文字的時候顏色是不會改變的。這個時候可以通過runtime來實現(xiàn)效果。

效果圖

  • 沒有設(shè)置之前的效果


    沒有設(shè)置之前的效果
  • 設(shè)置之后的效果


    設(shè)置之后點擊輸入框文字顏色改變了

運行時(runtime)

在動手之前先簡單了解runtime的概念:

  • 蘋果官方的一套C語言庫
  • 能做很多底層操作(比如訪問隱藏的一些成員變量、成員方法。。。)

步驟

  1. 重寫awakeFromNib,在里面用KVC設(shè)置站位文字顏色、
  2. 通過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];
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容