2

我在創建模擬搜索視圖時遇到了問題,該視圖模擬了天氣應用的行爲。具體來說,有兩個動畫,那些困擾我和引進不必要的0.2秒的延時:如何禁止虛擬鍵盤滑入動畫?

  • 當模式的看法變得可見,我在viewDidAppear caling becomeFirstResponder提供焦點UISearchDisplayController.searchBar。但是,當模式視圖滑入時鍵盤不可見,但在完成模式視圖轉換動畫後需要另外0.2秒才能滑入。將呼叫轉移到另一個回撥如viewWillAppearviewDidLoad沒有任何好處,鍵盤不會顯示在第一位。

  • 當用戶觸摸取消時,會出現另一個動畫,在調用代理的searchDisplayControllerDidEndSearch方法之前,展開搜索文本字段並「熔化」按鈕。再一次,這個動畫是不受歡迎的,因爲當按鈕被觸摸時,模態視圖應該轉換出來。

  • 此外,當我解散並重新呈現相同的視圖時,鍵盤不僅會在轉換後滑入,而且取消按鈕也會一樣(幸運地是同時)。

我知道這裏描述的類似問題:Keyboard Animation Issues When Calling becomeFirstResponder within a Modal View Controller。 但是,似乎搜索欄的行爲與文本字段的行爲略有不同。我無法複製該作者描述的步驟,通過撥打viewDidLoad中的becomeFirstResponder來使鍵盤可見。

的問候, 克里斯

回答

1

我想我找到了答案。當您使用界面構建器添加搜索欄時,可以通過兩種方法來實現:「搜索欄」和「搜索欄和搜索顯示控制器」。

我正在使用第二個,並且遇到了與您描述的問題相同的問題。我只能在「viewDidAppear」上調用鍵盤(使用becomeFirstResponder)。但是,如果你這樣做,只加入它的搜索欄。現在我可以在「viewDidLoad」上調用becomeFirstResponder,並且鍵盤與視圖本身一起出現。

我意味着多一點工作,但真的不多。您必須將控制器設置爲搜索欄的代表。我爲結果添加了一個列表視圖,並使我的控​​制器成爲它的委託和它的數據源。

+0

感謝您花時間創建一個帳戶來告訴我:-)。自2月份以來,我對該應用進行了改造,因此對我來說這不再是問題。我希望這可以幫助很多希望模擬原生iOS應用的用戶體驗的人。 – Chris 2012-08-06 12:54:45