2010-04-01 35 views
1

我只是想知道哪種方法更好地隱藏鍵盤在iPhone應用程序中resignFirstResponder或 - (IBAction爲)doneButtonOnKeyboardPressed:(ID)發送

1>實施對文本字段的

- (IBAction) doneButtonOnKeyboardPressed: (id)sender 
{ 

} 

方法真的結束在退出事件

OR

在文本字段實現這個

-(BOOL)textFieldShouldReturn:(UITextField *)theTextField { 
[txtName resignFirstResponder]; 
return YES; 
} 

哪種選擇最好選擇在哪種情況下......?任何一個選項都比其他...有優勢?

回答

1

我強烈希望通過響應UIControlEventDidEndOnExit事件來使用目標/動作模式,通常通過在IB中顯示的「Did End On Exit」事件連接到文件所有者,使用我的選擇。這將是您展示的第一個選項。

這也是爲什麼我喜歡這種機制:

它許多應用程序(當然,至少應用程序),有必要取消輸入,比如,通過將文本字段以外的觸摸之間進行區分,並且完成通過鍵盤上的完成按鈕輸入(文檔傾向於將其稱爲「返回」按鈕)。因爲-textFieldDidEndEditing委託方法被調用當字段是第一個響應者(不論截至編輯的原因)任何時候-resignFirstResponder被調用時,就必須有一個可變的地方跟蹤你如何終止編輯的路徑。這引入了一個簡單沒有必要的複雜程度。

在我的應用程序中,我響應UITextField之外的觸摸事件,調用-resignFirstResponder取消編輯而不採取進一步的操作。如果我使用委託方法,則需要在此處設置狀態以記錄我正在通過我的代碼執行「取消」路徑,並使用委託方法設置狀態以指示我正在執行「完成'我的代碼的路徑,並調用-resignFirstResponder。亂。

這裏使用的目標/行動模式帶來更簡單,更乾淨的代碼。

0

功能是一樣的,一個是從控件「textfield」和其他與鍵盤代理相關的處理。你爲什麼要處理鍵盤?我建議從烏爾控制處理呢.....

+0

這不提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 – sschaef 2012-11-16 21:50:59

0
-(BOOL)textFieldShouldReturn:(UITextField *)theTextField { 
    [txtName resignFirstResponder]; 
    return YES; 
} 

以上方法是最好的 - 你只需要在連接檢查器選擇你的任何文本框&的 - 你的文件的所有者連接到文本框的委託。這會做你的事情工作。