2012-07-15 83 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