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 に答える