iOS 實時監(jiān)聽UItextField變化

之前遇到實時監(jiān)聽 UItextField變化發(fā)現(xiàn)使用它的代理方法會有其他問題出現(xiàn),最后得出結論得添加addtarget事件才可以,趁著這會有時間,把這些整理一下。如果你也遇到了此問題,那么請看以下說明,助你了解并解決問題

  • 這個時候,自然會想到使用UItextField的代理方法:
#pragma mark -監(jiān)聽uitextfield的值得變化
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
   NSLog(@"textField4 - 正在編輯, 當前輸入框內(nèi)容為: %@",textField.text);
   return YES;
}

但是這個方法有一個問題,他只會監(jiān)聽每次輸入或者刪除前的值是多少,當修改后,你并不知道最后一個字符改變后,UITextField中的值是多少。

也可能會想到,每次結束編輯的時候,將相應的UITextField中的值傳出,這個時候調(diào)用:

-(BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
    str = textField.text;

    return YES;
}

但是這個方法的前提是你點擊了return按鈕,否則并不會被調(diào)用:

為了能夠實時的監(jiān)聽textField的輸入的改變,首先給UItextField添加一個編輯事件,每次這個事件觸發(fā)一個函數(shù),在相應的函數(shù)中得到UItextField的值。當然你也可以在這個函數(shù)中做你想要的處理,比如將UItextField的值以通知的形式發(fā)送給相關的控制器,以便做下一步處理。而在本項目中,只需要實時的記錄每一個cell中的UItextField的值就可以。
具體代碼如下:

[textField addTarget:self action:@selector(changedTextField:) forControlEvents:UIControlEventEditingChanged];

#pragma mark -給每個cell中的textfield添加事件,只要值改變就調(diào)用此函數(shù)
-(void)changedTextField:(id)textField
{
    NSLog(@"值是---%@",textField.text); 
}

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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

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