在 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/