2013-03-08 61 views
0

在iOS Apprentice Series電子書中,您應該創建一個Checklist應用程序。本教程將介紹如何在基於UITextField對象內部文本禁用和啓用的按鈕欄上創建完成按鈕。iOS 6 - 響應鍵盤完成按鈕狀態

- (BOOL)textField:(UITextField *)theTextField shouldChangeCharactersInRange:(NSRange)range  replacementString:(NSString *)string 
{ 
NSString *newText = [theTextField.text stringByReplacingCharactersInRange:range withString:string]; 

self.doneBarButton.enabled = ([newText length] > 0); 

return YES; 
} 

現在,如果文本字段爲空,則將鍵盤設置爲禁用「完成」按鈕(在鍵盤上)。有沒有一種方法可以觀察鍵盤完成狀態按鈕,並且已完成按鈕欄按鈕可以相應地反映它?

IE,啓用鍵盤完成按鈕後,啓用按鈕欄完成按鈕。

+0

這就是你發佈的上述代碼所做的。上述代碼有什麼問題? – iDev 2013-03-08 01:23:04

+0

我會試着澄清一下:鍵盤如何知道文本已經輸入到字段中?對文本字段中的每個變化做出迴應似乎都是浪費。 – 2013-03-08 02:23:02

+0

在這種情況下,它會執行EndEditing委託方法。你可以添加上面那行的那個方法。 – iDev 2013-03-08 04:08:42

回答

1

UITextField支持您想通過enablesReturnKeyAutomatically性質是什麼。該屬性來自UITextInputTraits協議。

當您創建UITextField時,請設置此屬性。

self.textField.enablesReturnKeyAutomatically = YES; 

這意味着如果文本字段爲空,則返回鍵(無論標記了什麼)將自動變爲禁用狀態。當輸入文本時,它會自動啓用。

無法觀察其狀態,因此您必須實現您已有的代碼textField:shouldChangeCharactersInRange:replacementString:來更新您的其他完成按鈕。

+0

對於我來說,檢查對文本字段所做的每個更改只是爲了啓用或禁用按鈕,這似乎很浪費。鍵盤如何知道文本字段的狀態? – 2013-03-08 02:26:35

+1

同樣的方法。不要擔心它會「浪費」。如果稍後發現由於此項檢查您的應用太慢,請立即處理。不要優化,直到你知道需要優化的東西。 – rmaddy 2013-03-08 02:29:30

0

您可以使用以下事件在文本字段上添加目標。

UIControlEventEditingDidBegin  
UIControlEventEditingChanged  
UIControlEventEditingDidEnd  
UIControlEventEditingDidEndOnExit 
UIControlEventAllEditingEvents 

例: 在viewDidLoad

[_textField addTarget:self action:@selector(textFieldEditing:) forControlEvents:UIControlEventAllEditingEvents]; 

操作方法:

- (void)textFieldEditing:(id)sender 
{ 
    _doneButton.enable = ([[sender text] length]>0); 
} 
+0

這些都不會影響問題中的內容。你可以爲每個事件實現'UITextFieldDelegate'方法。無需爲每個目標添加目標/操作。只有當您需要其他課程才能觀察除測試領域的代表之外的事件時才需要。 – rmaddy 2013-03-08 02:15:19

相關問題