[英]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.