2012-01-15 52 views

回答

7

使用NSNotificationCenter並查看UITextFieldTextDidChangeNotification

[[NSNotificationCenter defaultCenter] addObserver:self 
      selector:@selector(textFieldChanged) 
       name:UITextFieldTextDidChangeNotification 
      object:textField]; 

現在實現一個功能-(void)textFieldChanged;和每個這個函數被調用的時間比較在UITextField與舊文本的新文本。不管發生了什麼變化,都是被按下的按鈕。

UITextFieldTextDidBeginEditingNotificationUITextFieldTextDidEndEditingNotification做類似的操作,以確保即使沒有鍵入文本(如反斜槓),也可以按下按鈕。

+0

+1爲好答案:) – 2012-01-15 07:13:47

+0

太棒了!我只需要在@selector函數名後面去掉冒號就可以了@selector(textFieldChanged) – RanLearns 2012-01-15 07:22:58

+0

謝謝修復=) – Dimme 2012-01-15 07:25:37

2

給你的文本字段一個代表。每當用戶更改文本時,都會調用代理的-textField:shouldChangeCharactersInRange:replacementString:方法,包括在鍵盤上輸入字符。

+0

如果文本字段爲空,並且用戶按下反斜槓,則不會調用此方法。 – Dimme 2012-01-15 07:07:29

+0

Dimme,當文本爲空且按下反斜槓時,這仍然不起作用。 UITextFieldTextDidChangeNotification與委託的textField不同的解決方案如何:shouldChangeCharactersInRange:replacementString?不是,他們都做同樣的事情!這不能攔截每個退格按鍵 – PostCodeism 2012-12-18 22:40:13