iPad键盘尺寸

16

我在苹果文档中找到了iPhone键盘的边界,但找不到iPad键盘的边界。你能帮我吗?

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 的引用,请使用它。


2
哇,谢谢 @Yar!这正是我所需要的,而且节省了我很多麻烦。 - ragamufin
@korbonix,这仍然存在于我所有设备的生产代码中。你还有困难吗? - Dan Rosenstark

18

iPhone 竖屏为 216 像素,横屏为 162 像素;iPad 竖屏为 264 像素,横屏为 352 像素。这适用于2010年使用的美式键盘。

其他语言可能会有不同的尺寸,而且美式键盘在未来也可能会有所变化。


在 iPhone 横屏模式下使用 116。162 仍然太大了。 - tallen11
9
不要依赖这些测量值。不同的语言使用不同大小的键盘。即使是美式英语键盘的大小在未来的iOS版本中也可能会更改。您应该始终以编程方式查询键盘的大小:请参见@Infinity的答案。 - titaniumdecoy
6
错了。带有不同语言的键盘大小可能会有所不同,例如日语键盘与英语键盘不同。使用Yar的方法来查看当前键盘的大小。 - Enrico Susatyo

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

8

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接