2011-04-22 84 views
23

真的很簡單的問題:如何自動加載鍵盤(iOS SDK)?

我得到了一個由兩個文本框組成的視圖。加載視圖時,我希望鍵盤自動彈出並聚焦第一個字段。

我該怎麼做? (在代碼中?在IB?)

非常感謝! wasabi

回答

61

在您的viewDidAppear:方法調用[yourTextField becomeFirstResponder]

+1

非常感謝,非常感謝:-)我覺得自己很蠢,因爲這是我試圖開始,但我碰巧在它WASN一個自定義的方法來放錯了地方't叫... *嘆* ty – pkluz 2011-04-22 20:04:53

+0

不錯的答案add +1 – Nikhil 2013-09-26 13:25:49

+0

但它不顯示鍵盤immidietly在視圖上。 – Szu 2014-07-11 15:46:08

7

[myTextField becomeFirstResponder]應該做的伎倆。

此外,請確保您實施UITextFieldDelegate方法,您可以隱藏第一個響應者。

2

作爲對MarkGranoff答案的澄清;

如果你把[yourTextField becomeFirstResponder]viewDidLoadviewWillAppear - 它會顯示鍵盤,而不必等待第二個或兩個(這恰好如果你把becomeFirstResponder調用viewDidAppear方法內)。

+1

但在viewWillAppear鍵盤顯示1或2秒,並立即解僱 – GSD 2014-11-14 10:54:01

+0

使用'viewWillAppear'在某些情況下,而不是其他人。我認爲這取決於如何呈現視圖控制器。 – 2016-06-07 02:39:26

2

嗯,我知道這個問題已經回答了很多次。在viewDidAppear方法被調用後,顯示鍵盤需要時間。

viewDidAppear是當它消失後在視圖生命週期中被調用的最後一種方法的原因。另外,如果在內存中找不到鍵盤,也需要創建鍵盤。所以,第一次需要更多時間,正如我所料。這些原因造成了一點點延誤,正在擾亂我。

我總是調用becomeFirstResponder方法viewWillAppear方法來減少鍵盤的顯示時間,但是我需要在viewDidAppear方法後面顯示鍵盤纔不會失去平滑的動畫。

所以,這個小動作我想出了像魅力的作品。我在模擬器和設備上進行了測試。如果在你的情況下它不能正常工作,你沒有別的選擇,只能按照接受的答案解釋。

那麼,我正在做的是創建一個UITextField(您可以使用任何與鍵盤交互的視圖),並調用成爲並退出第一響應者方法,以將我的鍵盤放入內存(如果尚未創建)。所以,第二次,你會讓鍵盤進入緩存,加速鍵盤顯示時間。那麼,我把這些代碼放在先前的視圖控制器中,我將在之後顯示鍵盤。

下面是代碼:

- (void)viewDidAppear:(BOOL)animated 
{ 
    UITextField *textField = [[UITextField alloc]init]; 
    [self.view addSubview:textField]; 
    [textField becomeFirstResponder]; 
    [textField resignFirstResponder]; 
    [textField removeFromSuperview]; 
}