[英]Keyboard height giving 0 on first load - Swift
我正在嘗試使用以下代碼在鍵盤出現時向上移動視圖:
func keyboardWillShow(notification: NSNotification) {
if let keyboardSize: CGSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue.size {
if self.view.frame.origin.y == 0{
print("Keyboard height is: \(keyboardSize.height)")
let keyboardHeight = keyboardSize.height - (self.tabBarController?.tabBar.frame.height)!
self.view.frame.origin.y -= (keyboardHeight)
print("Keyboard height is: \(keyboardSize.height)")
}
}
}
一旦打開應用程序,第一次調用此函數時,鍵盤高度將填充為0,這意味着視圖會下降tabBar的高度。 當我重新加載視圖時,它從那時起就完美地運行了。
在鍵盤實際打開之前,似乎我沒有獲得鍵盤高度,這對於第一次運行功能來說已經太晚了。
知道問題是什么嗎? 如果您想了解更多詳情,請與我們聯系。
使用UIKeyboardFrameEndUserInfoKey
而不是UIKeyboardFrameBeginUserInfoKey
,看看是否有幫助。
適用於swift 3.0及以上版本
@objc private func keyboardWillShow(_ notification: Notification){
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue
{
print("keyboardSize.height = ",keyboardSize.height)
} }
我正在使用這個
第一
var iskeyboard : Bool = false;
為表演
func keyboardWillShow(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
if (!iskeyboard)
{
self.view.frame.origin.y -= keyboardSize.height
}
iskeyboard = true
}
}
為了隱藏
func keyboardWillHide(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
if (iskeyboard)
{
self.view.frame.origin.y += keyboardSize.height
}
iskeyboard = false
}
}
這是因為您在鍵盤顯示之前嘗試訪問keyboardHeight。
聽mp3DidShow( :)而不是keyboardWillShow( :),你將獲得正確的鍵盤高度。
改用它:
func keyboardDidShow(notification: NSNotification) {
if let keyboardSize: CGSize = (notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue.size {
//DO YOUR STUFF
} }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.