textField開始編輯和結束編輯後佔位文字顏色的設定
需求:一般會要求設定點選開始編輯後佔位文字的顏色
理論指導:
1.一旦見到控制元件上的點選事件,馬上想到監聽,一見到監聽,馬上想到讓代理物件或者target物件去監聽,一見到代理物件,馬上想到在非控制元件類中去設定代理,控制元件類中是不允許自己設定自己為代理的,如:self.delegate = self 代理產生背景就是由於自己不想做的事情交給別人來做,在自己類中自己監聽自己只能用addTarget去做
2.textField上有兩個事件,點選開始編輯和點選其他地方結束編輯,addTarget是解決這樣的事件最好的方法
3.textField是繼承於UIControl,可以用addTarget
解決方法:
1.設定富文字顏色屬性
[self addTarget:self action:@selector(editBegin) forControlEvents:UIControlEventEditingDidBegin];
[self addTarget:self action:@selector(editEnd) forControlEvents:UIControlEventEditingDidEnd];
NSMutableDictionary *attrs = [NSMutableDictionary dictionary];
attrs[NSForegroundColorAttributeName] = [UIColor lightGrayColor];
self.attributedPlaceholder = [[NSAttributedString alloc] initWithString:self.placeholder attributes:attrs];
2.拿到佔位文字label,直接設定它的color
由於佔位文字label是textField的私有屬性,所以正常是拿不到的,只能藉助於kvc
根據成員變數名獲取到該控制元件物件
UILabel *placeHolderLabel = [self valueForKey:@"placeHolderLabel"];
placeHolderLabel.textColor = [UIColor whiteColor];
注意:儘管這樣使用比較簡單,但是我還是傾向於使用第一種方法
封裝:
由於testField沒有直接提供placeHolderColor屬性,而我們為了仿照系統控制元件其它屬性可以這樣直接點出來,所以進行一個封裝,封裝到哪裡呢?這就要進行分析,這個屬性是不是所有的textField控制元件都要使用,如果都要使用,那麼封裝到分類中
1.先在.h中宣告屬性,分類中的屬性不會形成set和get實現,只會生成宣告
@property UIColor *placeHolderColor;
2.在.m中實現set和get方法
-(void)setPlaceHolderColor:(UIColor *)placeHolderColor
{
NSMutableDictionary *attrs = [NSMutableDictionary dictionary];
attrs[NSForegroundColorAttributeName] = placeHolderColor;
self.attributedPlaceholder = [[NSAttributedString alloc] initWithString:self.placeholder attributes:attrs];
}
-(UIColor *)placeHolderColor
{
return nil;
}
相關文章
- typora編寫md檔案文字設定顏色
- python如何開始編輯Python
- Linux下設定VSCode為預設的文字編輯器LinuxVSCode
- css文字編輯CSS
- 直播網站程式原始碼,給元件按鈕、文字編輯框等設定圓形邊框、顏色網站原始碼元件
- 簡單的文字編輯
- Textadept for mac文字編輯Mac
- PilotEdit 16,文字編輯
- 微信小程式圖文編輯元件開發(偽富文字編輯)微信小程式元件
- Confluence6開始編輯CSSCSS
- Django後臺管理配置富文字編輯器Django
- 文字和原始碼編輯器EditRocket for Mac原始碼Mac
- [譯] 為數字優先新聞編輯室開發文字編輯器
- Mac文字編輯軟體Mac
- FSNotes for Mac(文字編輯器)Mac
- Typora for Mac(文字編輯器)Mac
- Linux文字編輯器JedLinux
- wordpress 設定編輯器預設模式模式
- windows10截圖後怎麼編輯圖片文字_win10在截圖上編輯文字的方法WindowsWin10
- [Djangorestframework]-富文字編輯器的使用DjangoRESTFramework
- 關於專案中使用的富文字編輯器markdown和傳統的富文字編輯器的對比和選擇
- PDF文字怎麼編輯?怎麼編輯PDF檔案內容
- Winform DataGridViewTextBoxCell 編輯新增右鍵選單,編輯選中文字ORMView
- Dynamics 365 可編輯子網格的欄位禁用不可編輯
- 金山文件怎麼設定編輯許可權 金山文件線上編輯許可權設定
- Markdown文字編輯器:Typora for MacMac
- SpringMVC整合富文字編輯器SpringMVC
- Typora for Mac - Markdown文字編輯器Mac
- Versatil Markdown for Mac文字編輯器Mac
- Typora for Mac(Markdown文字編輯器)Mac
- QT 多文件文字編輯器QT
- 從零開始, 開發一個 Web Office 套件 (2): 富文字編輯器Web套件
- 從零開始, 開發一個 Web Office 套件 (1): 富文字編輯器Web套件
- UltraEdit文字編輯器編寫強大的宏教程
- vscode 編輯器內網代理設定VSCode內網
- flutter TextField設定高度後,文字無法居中Flutter
- 設定toast的字型顏色和背景顏色AST
- 簡潔好用的文字編輯工具Typora
- 學習使用Wpf開源的文字編輯器—smithhtmleditorMITHTML