objective-c - 键盘大小返回错误值?

标签 objective-c ios cocoa-touch

在 iPad 上,订阅 UIKeyboardDidShowNotification 之后

NSDictionary* info = [aNotification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
NSLog(@"%@", NSStringFromCGSize(kbSize));

打印 {352, 1024}

这不是错了吗?不仅键盘高度这么大,高度怎么可能大于宽度呢? 还是我遗漏了什么?

最佳答案

我打赌尺寸是在静态方向上报告的(“窗口”方向实际上从未改变),所以我建议将其转换为您感兴趣的 View 。我通常的技巧是将其转换为窗口的 rootViewController View 的坐标空间:

CGRect rawKeyboardRect = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue];
CGRect properlyRotatedCoords = [self.view.window convertRect:rawKeyboardRect toView:self.view.window.rootViewController.view];

或者更合适的 View (如果有)。关键是窗口坐标空间中报告的任何坐标都不会旋转,即使窗口的 rootVC View 旋转了也是如此。

关于objective-c - 键盘大小返回错误值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11494920/

相关文章:

iphone - 如何将 NSData 对象转换为文件输出

ios - 烦人的简单问题,将数据发送到其他 View Controller

objective-c - 子类化文本字段和标记字段不显示光标

c# - PushSharp 异常 : The credentials supplied to the package were not recognized

ios - 使用_框架!和库 repo 根目录中的 podspec

iphone - NSTimer 不会停止

objective-c - 自定义 UIFont 为零

objective-c - vImageConvert 提取一个 channel

ios - swift 4 中编码类型的网络调用

iphone - iStat for iPhone如何获取WiFi MAC和任务列表