addTarget方式和UITextFieldDelegate方式監聽文字框淺析
如圖所示:
在開發中,一般都要監聽賬號對應的輸入文字框和密碼對應的文字框同時有值,才能讓登入按鈕可以點選,這個時候就有兩種辦法了,一種是通過UITextFieldDelegate方法監聽,一種是通過addTarget方法監聽,可能大多數人有和筆者相同的疑問,是不是都可以呢?那麼筆者通過實驗來說明情況:
首先通過UITextFieldDelegate方式監聽
//當賬號與密碼同時有值,登入按鈕才能夠點選
self.accountTextF.delegate = self;
self.pwdTextF.delegate = self;
點選文字框的時候會自動呼叫該方法
//是否允許改變文字.
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSLog(@"accountTextF==%@",self.accountTextF.text);
NSLog(@"----%@",string);
if (self.accountTextF.text.length && self.pwdTextF.text.length) {
self.loginBtn.enabled = YES;
}else {
self.loginBtn.enabled = NO;
}
return YES;
}
- 上面筆者把賬號對應的屬性裡面儲存的值self.accountTextF.text,和string的值列印了一下,如圖所示,
細心的讀者可能已經發現了,值不一樣,不同步,self.accountTextF.text的值比string的值慢了一拍,這樣就不行了,為什麼因為如果我通過每個文字框的長度去判斷有沒有值的時候,比如我就在賬號文字框裡面輸入了一個字元
a
,按道理,我的賬號文字框的長度應該是1,可是剛剛通過列印,發現長度應該是0,那麼在裡面進行一些邏輯業務的判斷是錯誤的,好了,接下來看addTarget方式通過addTarget方式監聽
[self.accountTextF addTarget:self action:@selector(textChange) forControlEvents:UIControlEventEditingChanged];
[self.pwdTextF addTarget:self action:@selector(textChange) forControlEvents:UIControlEventEditingChanged];
//當文字內容改變時呼叫
- (void)textChange
{
NSLog(@"accountTextF==%@",self.accountTextF.text);
//當賬號與密碼同時有值,登入按鈕才能夠點選
self.loginBtn.enabled = self.accountTextF.text.length && self.pwdTextF.text.length;
}
效果圖片:
看到沒有,賬號文字框中輸入一個字元
a,控制檯就列印一個字元
a,兩者保持同步,所以在裡面進行一些邏輯業務的判斷,沒有問題,所以最終結論是,只能用addTarget方式,不能用UITextFieldDelegate方式,謝謝大家
相關文章
- nodejs監聽的方式NodeJS
- 淺析malloc()的幾種實現方式
- 前端佈局方式彙總及概念淺析前端
- Android的事件處理——監聽介面方式Android事件
- 淺析Vue原始碼(八)——依賴收集與監聽Vue原始碼
- jquery監聽文字框內容變化程式碼例項jQuery
- 實時監聽文字框內容變化程式碼例項
- 淺析自動駕駛車載監控系統及其中運用到的標註方式自動駕駛
- 淺析SpringBoot載入配置的6種方式Spring Boot
- 銀行資料中心雙活實現方式淺析
- Vue_watch深度監聽的正確開啟方式Vue
- 逆向淺析常見病毒的注入方式系列之一-----WriteProcessMemorySSM
- ASP.NET Core中配置監聽URLs的五種方式ASP.NET
- 動態監聽和靜態監聽
- oninput和onpropertychange實時監聽輸入框值的變化
- 中科三方:淺析IPv6升級改造的幾種方式?
- 中科三方:淺析IPv6升級改造的幾種方式
- 淺談CSRF攻擊方式
- oracle靜態監聽和動態監聽Oracle
- JavaScript 動畫方式彈出圓角框JavaScript動畫
- Javascript事件模型系列(三)jQuery中的事件監聽方式及異同點JavaScript事件模型jQuery
- CAD表格文字對齊方式
- swift 訊息監聽和鍵值監聽(kvo)Swift
- (轉)使用一個下拉框或文字框+列表框的方式實現類似IE位址列自動完成的功能
- 淺談ddos的測試方式
- 動態監聽輸入框值的變化
- 實現高度“聽話”的多行文字輸入框
- 屬性和監聽
- 前端與移動開發----webAPI----文字框事件,滑鼠事件,標籤屬性操作方式前端移動開發WebAPI事件
- 使用EasyUI,關於日期格式的文字框按照正常方式獲取不到值的問題UI
- 大文字平行計算實現方式
- Linux vim 搜尋文字的方式Linux
- Bootstrap系列 -- 5. 文字對齊方式boot
- JavaScript監聽文字節點內容改變JavaScript
- 直播平臺軟體開發,監聽WebView滑動到底部的兩種方式WebView
- 原型模式(傳統方式,淺拷貝和深拷貝)原型模式
- 淺談HTTP中GET和POST請求方式的區別HTTP
- 【listener】oracle靜態監聽和動態監聽 【轉載】Oracle