2013-04-18 75 views
1

我的屏幕中央有一個UIView,其中包含一個UISearchBar。當用戶點擊UISearchBar時,我成功根據UIKeyboardFrameEndUserInfoKey對此視圖進行動畫處理。當鍵盤顯示時以相同的速率移動UIView

問題是,這對我來說不夠好。

我希望做的是保持了UIView,直到鍵盤頂部接觸的UIView的底部,然後將向上的UIView在鍵盤上移動相同的速度。一旦鍵盤到達UIView,基本上將UIView「固定」到鍵盤的頂部。

我開始認爲這是不可能與UIKeyboard通知發出的信息。任何人都試過類似的東西,看到成功?

謝謝!

回答

0

您應該能夠使用UIKeyboardWillChangeFrameNotification中提供的信息來做到這一點。本通知中的信息告訴你的鍵盤,動畫曲線的類型和持續時間的開始和結束幀。

要在動畫的任何給定時間計算鍵盤的點,您可以使用Jeff LaMarche的this code,或者使用CAMediaTimingFunction類,並插入動畫類型(帶有名稱的函數),並找出鍵盤應該在某個時間點。

一旦您知道鍵盤在某個時間點的位置,您可以爲您的UIView設置一個動畫,以便隨鍵盤移動。

+0

感謝有關'CAMediaTimingFunction'尖端。我不知道我怎麼會確保我的定時器和鍵盤計時器都在同一時間開始。我意識到這真的不適合的設計了(例如,它永遠不會發生在iPhone 5所以這是一個有爭議的問題。 –