9

在 iPad 上,订阅后UIKeyboardDidShowNotification

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

印刷{352, 1024}

这不是错的吗?不仅键盘高度这么大,高度怎么会大于宽度呢?还是我错过了什么?

4

1 回答 1

40

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

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

或者如果你有一个更合适的视图。关键是窗口坐标空间中报告的任何坐标都不会旋转,即使窗口的 rootVC 的视图是旋转的。

于 2012-07-15T19:44:03.070 回答