键盘大小返回错误的值?

0xS*_*ina 9 cocoa-touch objective-c ios

订阅后,在iPad上 UIKeyboardDidShowNotification

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

版画 {352, 1024}

这不对吗?键盘的高度不仅如此之大,高度怎么能大于宽度?或者我错过了什么?

Chr*_*hey 40

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

CGRect rawKeyboardRect = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue];
CGRect properlyRotatedCoords = [self.view.window convertRect:rawKeyboardRect toView:self.view.window.rootViewController.view];
Run Code Online (Sandbox Code Playgroud)

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