2010-04-30 156 views

回答

8

我刚发现它,如果有人需要它。
Keyboard Notification User Info Keys

+0

你应该继续并接受你自己的答案。 – 2010-04-30 12:29:47

+0

好的,非常感谢! – 2010-05-03 14:09:18

18

对于iPhone纵向216像素,横向162像素,对于纵向iPad,它是264像素和横向352像素。这适用于2010年的美国键盘。

这些尺寸对于其他语言可能不同,对美国也可能会有所不同。

+0

在横向使用iPhone 116。 162仍然很大。 – tallen11 2011-02-13 16:22:18

+9

你不应该依赖这些测量。不同语言使用不同的键盘尺寸。即使美国英语键盘的大小在未来的iOS版本中也可能会发生变化。您应该始终以编程方式查询键盘的大小:请参阅@ Infinity的答案。 – titaniumdecoy 2011-08-03 00:50:43

+3

-1我真的需要解释为什么吗? – 2011-10-21 14:41:48

60

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

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

并且还有更多here。请注意,您也需要删除它们(使用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参考,使用它。

+0

是的,谢谢你的代码,我懒得写下来:) :) – 2011-09-06 06:39:21

+0

当然@Infinity,很乐意帮忙。 – 2011-09-06 12:07:29

+2

哇,谢谢@Yar!这正是我所需要的,为我节省了很多心痛。 – ragamufin 2012-02-03 18:00:25

11

请注意,如果用户选择使用iPad上的“分裂”的键盘,然后UIKeyboardDidShowNotification/* UIKeyboardDidHideNotification *通知不会被解雇。相反,UIKeyboardDidChangeFrameNotification通知将在显示和隐藏中触发。你将不得不分析keyboardFrame.origin.y找出究竟发生了什么(显示或隐藏)。

+0

来自iOS 5.谢谢! :) – 2012-01-24 07:34:13