获取键盘的高度不工作在IOS 11测试版
问题描述:
我有以下代码工作在IOS 10,但现在它不再工作时,在IOS 11测试版上运行。获取键盘的高度不工作在IOS 11测试版
if let userInfo = notification.userInfo {
if let keyboardSize = (userInfo[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
print(keyboardSize)
}
}
这是我所得到的,当我打印尺寸:
(0.0, 0.0, 0.0, 0.0)
(0.0, 736.0, 414.0, 0.0)
任何人都知道为什么这已停止工作?或者,如果我有其他的选择来获得键盘大小?
答
使用UIKeyboardFrameEndUserInfoKey
而不是UIKeyboardFrameBeginUserInfoKey
因此改变你的代码,下面将解决您的问题:
if let userInfo = notification.userInfo {
if let keyboardSize = (userInfo[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue {
print(keyboardSize)
}
}
+0
这是正确的答案,并应标记为这样 – aug2uag
答
我有同样的问题。 Doug Amos的答案是正确的。我只想说清楚一点。 这里是我的代码:
@objc func keyboardWillShow(notification:NSNotification){
var userInfo = notification.userInfo!
var keyboardFrame:CGRect = (userInfo[UIKeyboardFrameBeginUserInfoKey] as! NSValue).cgRectValue
if keyboardFrame.size.height <= 0 { // to fix bug on iOS 11
keyboardFrame = (userInfo[UIKeyboardFrameEndUserInfoKey] as! NSValue).cgRectValue
}
keyboardFrame = self.view.convert(keyboardFrame, from: nil)
}
答
func keyboardWillShow(_ notification: Foundation.Notification) {
if let keyboardSize = notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as? CGRect {
print(keyboardSize)
}
}
答
我用这个代码在我的应用程序SWIF 3+
var userInfo = notification.userInfo
if let keyboardFrame = (userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue{
print(keyboardFrame.height)
if keyboardFrame.size.height <= 0 { // To fix bug on iOS 11
if let newKeyboardFrame = (userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue{
print(newKeyboardFrame.height)
}
}
}
view.layoutIfNeeded()
同样的问题https://stackoverflow.com/questions/45569276/密码自动填充,quicktype吧 - 在-IOS-11? –
@MartinR:是的,同样的问题在这里,以相同的修复答案:) – Kobe