我有一個UIToolbar
帶有一個文本框,當顯示鍵盤時應該向上移動。UIKeyboardWillShowNotification調用不動畫UIToolbar
在我viewWillAppear
,註冊我的觀察:
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillShow:", name: UIKeyboardWillShowNotification, object: nil)
(viewWillDisappear刪除我的觀察者)
而且功能:
func keyboardWillShow(notification: NSNotification) {
println("will show")
let userInfo = notification.userInfo!
let keyboardFrame = (userInfo[UIKeyboardFrameEndUserInfoKey] as NSValue).CGRectValue()
let animationDuration = (userInfo[UIKeyboardAnimationDurationUserInfoKey] as NSNumber).doubleValue
let animations:() ->() = {
self.toolBar.frame.origin.y = self.view.frame.size.height - keyboardFrame.height - self.toolBar.frame.height
}
if animationDuration > 0 {
let options = UIViewAnimationOptions(UInt((userInfo[UIKeyboardAnimationCurveUserInfoKey] as NSNumber).integerValue << 16)) // http://stackoverflow.com/a/18873820/242933
UIView.animateWithDuration(animationDuration, delay: 0, options: options, animations: animations, completion: nil)
} else {
animations()
}
}
現在,當我點擊了UITextField
,鍵盤出現並呼籲keyboardWillShow
。但是直到keyboardWillShow
被第二次調用(有多個鍵盤不工作,除非高度改變;例如當自動填充欄改變狀態時),動畫纔會發生。
我在做什麼錯?我看到的每個地方都以這種方式實施。
編輯:更多細節:
動畫()被調用與正確的高度爲工具欄,但用戶界面不會把工具欄在正確的位置。也許這是尚未初始化的東西?
更多詳細信息:當使用UIToolbar
作爲inputAccessoryView
時,當我點擊UITextField
時,它不會出現在鍵盤上方,但是當我開始鍵入時,它確實如此。我在這裏用盡了...
甚至更多試圖找到問題:似乎運行任何其他動畫工作,如更改工具欄的高度。