2012-12-21 70 views
0

蘋果文檔提供:UI TextField委託方法textFieldShouldReturn的返回值是什麼意思?

詢問委託文本字段是否應該處理按下 返回按鈕的。

- (BOOL)textFieldShouldReturn:(UITextField *)textField 

參數textField的文本字段返回按鈕被按下。 Return ValueYES如果文本字段應該執行其返回按鈕的默認 行爲;否則,NO

討論的文本字段callsthis方法,每當用戶tapsthe 返回按鈕。點按按鈕時,您可以使用此方法實施任何自定義 行爲。

我的問題是什麼返回值嗎?我一直在用這種方法實現行爲,所以返回的內容沒有區別。這不是執行該操作的正確方法嗎?例如,如果我實現了搜索功能,我應該在這個方法或其他地方觸發搜索操作。

+1

是的,你可以在這裏觸發你的搜索(或者有時候,人們會在他們輸入時啓動搜索,在這種情況下,你不需要這樣做)。但是,是的,如果你想在用戶點擊返回鍵時實現你自己的行爲,你會在這裏返回NO,並做你認爲合適的事情。 – Rob

回答

4

這是當用戶點擊回車鍵盤鍵(無論它正好被標記)觸發動作的正確方法。

textFieldShouldReturn:委託方法的返回值幾乎從來沒有重要的。如果你正在處理單個文本字段,那麼它肯定沒有關係。

我碰到一個問題,後來讓我意識到,在恰當的情況下,返回值確實很重要。我有一個屏幕有幾個文本字段,然後是文本視圖。我正在使用此文本字段委託方法將第一個響應者從文本字段更改爲文本字段到文本視圖。我發現如果我在這個委託方法中返回YES,然後使文本查看第一個響應者,則新行被髮送到文本視圖。

由於這樣的結果,我現在總是返回NO從這個委託的方法是安全的。

2

當您按下鍵盤上的返回按鈕時,textFieldShouldReturn被調用。 我從來沒有經歷過返回值之間的任何區別。

定製例如:

如果你有兩個文本框,當用戶按下從第一個文本框返回按鈕,就可以把焦點對第二場以下列方式:

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{ 
    NSLog(@"textFieldShouldReturn:"); 
    if (textField.tag == 1) 
    { 
     UITextField *passwordTextField = (UITextField *)[self.view viewWithTag:2]; 
     [passwordTextField becomeFirstResponder]; 
    } 
    else 
    { 
     [textField resignFirstResponder]; 
    } 
    return YES; 
} 

所以,你可以使用此代理方法用於觸發搜索功能。

+0

根據我的經驗,返回YES對鍵盤完全沒有影響。在你發佈的代碼中,返回「NO」不會有任何區別。這是對'resignFirstResponder'的調用,使鍵盤消失,不返回YES。 – rmaddy

+0

@rmaddy:用我的答案找到問題並修復它。 –

相關問題