16

我在苹果文档中找到了 iPhone 的键盘范围,但我找不到 iPad 的键盘范围。请你帮助我好吗?

4

4 回答 4

60

代码中的整个答案如下所示。首先,您需要注册通知:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:nil];

这里还有更多。请注意,您也需要摆脱它们(使用removeObserver)。

然后,您需要一个获取通知以获取大小的方法。请注意,最初的大小是不旋转的(因为UIWindow不旋转。它的内容会旋转)。

- (void) keyboardDidShow:(NSNotification*)notification {
        CGRect keyboardFrame = [[[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
        NSLog(@"keyboard frame raw %@", NSStringFromCGRect(keyboardFrame));

        UIWindow *window = [[[UIApplication sharedApplication] windows]objectAtIndex:0];
        UIView *mainSubviewOfWindow = window.rootViewController.view;
        CGRect keyboardFrameConverted = [mainSubviewOfWindow convertRect:keyboardFrame fromView:window];
        NSLog(@"keyboard frame converted %@", NSStringFromCGRect(keyboardFrameConverted));
}

显然,如果您mainSubviewOfWindow通过其他方式引用您的,请使用它。

于 2011-09-04T21:41:16.320 回答
18

iPhone 纵向 216 像素,横向 162 像素,iPad 纵向 264 像素,横向 352 像素。这对 2010 年的美国键盘有效。

对于其他语言,这些大小可能会有所不同,并且对于美国也可能会发生变化。

于 2010-10-26T15:16:32.390 回答
11

请注意,如果用户选择在 iPad 上使用“拆分”键盘,则UIKeyboardDidShowNotification /* UIKeyboardDidHideNotification * 通知将不会被触发。相反,UIKeyboardDidChangeFrameNotification通知将在显示和隐藏时触发。您将不得不分析keyboardFrame.origin.y以确定究竟发生了什么(显示或隐藏)。

于 2012-01-24T05:27:22.463 回答
8

如果其他人需要它,我只是找到它。
键盘通知用户信息键

于 2010-04-30T08:35:04.040 回答