我想在用戶打字時在鍵盤上方移動一個堆棧視圖。我使用下面的代碼來獲取鍵盤的高度(取自Move view with keyboard using Swift)。鍵盤高度0
第一次出現鍵盤時,代碼有效,keyboardSize.height
打印出來爲226.0
。但是,當鍵盤在第一次後重新出現時,keyboardSize.height
打印出來爲0.0
。因此,當出現鍵盤時,我始終無法移動堆疊視圖。偶爾,代碼會在第一次嘗試後再次運行,但不會超過一次,並且行爲不一致。
當我只是打印出keyboardSize
,我第一次得到(0.0, 736.0, 414.0, 226.0)
。第一次後,keyboardSize
打印出來是(0.0, 736.0, 414.0, 0.0)
,所以只有高度變得不正確。
我怎樣才能始終如一地獲得鍵盤的高度?爲什麼會發生這個問題?
override func viewDidLoad() {
NotificationCenter.default.addObserver(self, selector: #selector(ViewController.keyboardWillShow), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(ViewController.keyboardWillHide), name: NSNotification.Name.UIKeyboardWillHide, object: nil)
}
@objc func keyboardWillShow(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue{
print(keyboardSize.height)
...
}
}
@objc func keyboardWillHide(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue{ ... }
}
能否請你描述一下「的時候,第一時間之後再次出現鍵盤」的意思? –
@TungFam是的。當我在搜索欄中輸入內容時,會出現鍵盤。當我完成鍵入並按搜索時,鍵盤消失。當我在搜索欄中重新編輯文本時,鍵盤將再次出現,這就是我的意思是「當鍵盤在第一次後重新出現時」。 –
找到了這個解決方案嗎?我認爲這是iOS 11測試版的問題。因爲我面對同樣的事情,當我在iOS 10上測試它時,它並沒有發生。 – TawaNicolas