我一直在使用键盘通知,没有任何问题,并获得了键盘的确切高度。
- (void)keyboardDidShow:(NSNotification *) notification{
CGSize keyboardSize = [[[notification userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
NSLog(@"%f",keyboardSize.height);}
但是在iOS 11中,当调用通知时,键盘的大小是0。
此场景中出现的问题是什么?我使用的是xcode 9 Beta 5
发布于 2017-08-15 17:04:06
使用以下命令:
CGSize keyboardSize = [[[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size;
对于Swift,您可以使用:
let keyboardSize = (notification.userInfo![UIKeyboardFrameEndUserInfoKey] as! NSValue).cgRectValue.size
发布于 2017-08-15 17:16:36
试试这个:
用UIKeyboardFrameEndUserInfoKey
替换UIKeyboardFrameBeginUserInfoKey
发布于 2017-09-30 00:10:42
虽然我使用的是Swift,但在使用Xcode版本9.0 (9A235)时也遇到了类似的问题。在我的keyboardWillShow方法中,我写了以下代码:
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
let heightValue = keyboardSize.height
...
}
奇怪的是,第一次调用keyboardWillShow时,heightValue是216.0,但在随后的调用中,它变成了0!也许这是一个Xcode错误。
我用UIKeyboardFrameEndUserInfoKey替换了UIKeyboardFrameBeginUserInfoKey,它为我解决了这个问题。
https://stackoverflow.com/questions/45689664
复制相似问题