2010-04-30 143 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