我有以下代码可用于IOS 10,但现在它在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)
任何人都知道为什么停止工作?或者,如果我有其他选择来获得键盘大小?
答案 0 :(得分:15)
使用UIKeyboardFrameEndUserInfoKey
代替UIKeyboardFrameBeginUserInfoKey
因此,将代码更改为以下内容将解决您的问题:
if let userInfo = notification.userInfo {
if let keyboardSize = (userInfo[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue {
print(keyboardSize)
}
}
答案 1 :(得分:3)
我有同样的问题。 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)
}
答案 2 :(得分:0)
我在我的应用中使用了 Swif 3 +
{{1}}