2013-09-26 33 views
10

在iOS 6中,我用於顯示viewDidLoad中的鍵盤。在正確的時間顯示鍵盤iOS7

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    [txtField becomeFirstResponder]; 
} 

這樣,當navigationController推動新的viewController,鍵盤已經存在,順利動畫從左至右,避免自下而上的動畫。

在iOS 7中,此行爲似乎中斷。

如果我在viewDidLoad中添加[txtField becomeFirstResponder],鍵盤會出現在推動動畫的中間,已經處於最終位置:不愉快的效果!

我試着移動[txtField becomeFirstResponder]viewWillAppear,但最終結果沒有變化。

您是否知道一種獲取iOS 6行爲的方法,將新的viewController和鍵盤一起推送?

編輯:使用定時器不工作或者...無論我設置的任何時間延遲,鍵盤僅顯示在推動畫的結尾。

到目前爲止,我最好的嘗試是把[txtField becomeFirstResponder]放在viewWillLayoutSubviewsviewDidLayoutSubviews。不幸的是,在推送viewController時這樣做,但在彈出時沒有(鍵盤不出現)。

+0

在ios 7中使用計時器延遲0.5秒。 – yen

+0

感謝您的建議,不幸的是它不適用於我。請看看我的編輯。 – Beppe

回答

12

我設法推斷您的解決方法viewWillLayoutSubviews強制它的工作。

- (void)viewWillLayoutSubviews { 

    if (![self.textField1 isFirstResponder] && ![self.textField2 isFirstResponder] && ...) { 
     [self.textField1 becomeFirstResponder]; 
    } 
} 

這對我來說都適用於推進堆棧和解散模態視圖控制器後。

+3

太棒了!這正是我所需要的。ViewWillAppear太快了,ViewDidAppear太晚了。 – delux247