首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >iOS 11 -键盘高度在键盘通知中返回0

iOS 11 -键盘高度在键盘通知中返回0
EN

Stack Overflow用户
提问于 2017-08-15 16:59:52
回答 4查看 21.4K关注 0票数 85

我一直在使用键盘通知,没有任何问题,并获得了键盘的确切高度。

代码语言:javascript
复制
- (void)keyboardDidShow:(NSNotification *) notification{
    CGSize keyboardSize = [[[notification userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;

    NSLog(@"%f",keyboardSize.height);}

但是在iOS 11中,当调用通知时,键盘的大小是0。

此场景中出现的问题是什么?我使用的是xcode 9 Beta 5

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-08-15 17:04:06

使用以下命令:

代码语言:javascript
复制
CGSize keyboardSize = [[[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size;

对于Swift,您可以使用:

代码语言:javascript
复制
let keyboardSize = (notification.userInfo![UIKeyboardFrameEndUserInfoKey] as! NSValue).cgRectValue.size
票数 191
EN

Stack Overflow用户

发布于 2017-08-15 17:16:36

试试这个:

UIKeyboardFrameEndUserInfoKey替换UIKeyboardFrameBeginUserInfoKey

票数 7
EN

Stack Overflow用户

发布于 2017-09-30 00:10:42

虽然我使用的是Swift,但在使用Xcode版本9.0 (9A235)时也遇到了类似的问题。在我的keyboardWillShow方法中,我写了以下代码:

代码语言:javascript
复制
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {

    let heightValue = keyboardSize.height    

    ...
}

奇怪的是,第一次调用keyboardWillShow时,heightValue是216.0,但在随后的调用中,它变成了0!也许这是一个Xcode错误。

我用UIKeyboardFrameEndUserInfoKey替换了UIKeyboardFrameBeginUserInfoKey,它为我解决了这个问题。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45689664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档