2012-07-15 54 views
9

在iPad上,订阅UIKeyboardDidShowNotification键盘大小返回错误的值?

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

打印{352, 1024}

这不是错后?不仅键盘的高度如此之大,高度怎么会比宽度大? 或者我错过了什么?

回答

40

我敢打赌,维度是以静态方向报告的(“窗口”方向从未真正改变),所以我建议将其转化为您感兴趣的观点。我的正常的诀窍是将其转换为窗口的RootViewController的视野的坐标空间:

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

或者更恰当的观点,如果你有一个可用。关键是,即使窗口的rootVC的视图是,窗口坐标空间中报告的任何坐标也不会旋转。

+0

太棒了,谢谢! – 0xSina 2012-07-15 19:55:54

+0

只有1对此投票? Bam,现在你有2个,谢谢! – 2012-11-29 18:08:44

+0

谢谢,你值得这张票! – Mausimo 2013-10-07 23:52:33