真的很簡單的問題:如何自動加載鍵盤(iOS SDK)?
我得到了一個由兩個文本框組成的視圖。加載視圖時,我希望鍵盤自動彈出並聚焦第一個字段。
我該怎麼做? (在代碼中?在IB?)
非常感謝! wasabi
真的很簡單的問題:如何自動加載鍵盤(iOS SDK)?
我得到了一個由兩個文本框組成的視圖。加載視圖時,我希望鍵盤自動彈出並聚焦第一個字段。
我該怎麼做? (在代碼中?在IB?)
非常感謝! wasabi
在您的viewDidAppear:
方法調用[yourTextField becomeFirstResponder]
。
[myTextField becomeFirstResponder]
應該做的伎倆。
此外,請確保您實施UITextFieldDelegate
方法,您可以隱藏第一個響應者。
作爲對MarkGranoff答案的澄清;
如果你把[yourTextField becomeFirstResponder]
內viewDidLoad
或viewWillAppear
- 它會顯示鍵盤,而不必等待第二個或兩個(這恰好如果你把becomeFirstResponder
調用viewDidAppear方法內)。
但在viewWillAppear鍵盤顯示1或2秒,並立即解僱 – GSD 2014-11-14 10:54:01
使用'viewWillAppear'在某些情況下,而不是其他人。我認爲這取決於如何呈現視圖控制器。 – 2016-06-07 02:39:26
嗯,我知道這個問題已經回答了很多次。在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];
}
非常感謝,非常感謝:-)我覺得自己很蠢,因爲這是我試圖開始,但我碰巧在它WASN一個自定義的方法來放錯了地方't叫... *嘆* ty – pkluz 2011-04-22 20:04:53
不錯的答案add +1 – Nikhil 2013-09-26 13:25:49
但它不顯示鍵盤immidietly在視圖上。 – Szu 2014-07-11 15:46:08