2012-02-01 38 views

回答

17

僅當用戶按下返回鍵時才調用textFieldShouldReturn。如果由於某些其他原因(如用戶選擇另一個字段或將視圖切換到另一個屏幕等原因而導致鍵盤被解除),則不會是textFieldDidEndEditing。

最好的方法是使用textFieldShouldReturn辭職響應(隱藏鍵盤)是這樣的:

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{ 
    //hide the keyboard 
    [textField resignFirstResponder]; 

    //return NO or YES, it doesn't matter 
    return YES; 
} 

當鍵盤關閉,textFieldDidEndEditing將被調用。然後,您可以使用textFieldDidEndEditing做一些與文本:

- (BOOL)textFieldDidEndEditing:(UITextField *)textField 
{ 
    //do something with the text 
} 

但是,如果你真的想,只有當用戶明確按下執行操作的「走出去」或「發送」或「搜索」(或其他)鍵盤上的按鈕,那麼你應該把該處理的textFieldShouldReturn方法來代替,就像這樣:

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{ 
    //hide the keyboard 
    [textField resignFirstResponder]; 

    //submit my form 
    [self submitFormActionOrWhatever]; 

    //return NO or YES, it doesn't matter 
    return YES; 
} 
+0

這是否意味着我應該使用textFieldDidEndEditing或有更好的方法嗎? – user836026 2012-02-01 19:12:09

+0

查看更新的答案。 – 2012-02-01 19:12:57

+0

謝謝..即使用戶沒有點擊「完成」按鈕,即使用戶按下「主頁」按鈕,我也想保存文本。我從你的答案理解我應該使用「textFieldShouldReturn」,對吧? – user836026 2012-02-01 19:28:14