2010-04-30 4 views

ответ

8

Я просто нашел его, если кому-то это понадобится.

+0

Вы должны пойти и принять свой собственный ответ. –

+0

Хорошо, спасибо большое! –

18

Для iPhone в портрете 216 пикселей, пейзаж 162 пикселя, для iPad в портрете 264 пикселя и в ландшафтном 352 пикселях. Это справедливо для клавиатуры США в 2010 году.

Эти размеры могут отличаться для других языков и могут быть изменены и для США.

+0

использовать 116 для iPhone в ландшафте. 162 все еще был большой. – tallen11

+9

Вы не должны полагаться на эти измерения. Различные языки используют разные размеры клавиатуры. Даже размер английской английской клавиатуры может измениться в будущих версиях iOS. Вы всегда должны запросить размер клавиатуры программно: см. Ответ @ Infinity для того, как. – titaniumdecoy

+3

-1 Мне действительно нужно объяснить, почему? –

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

Да, спасибо за код, мне было лениво записать его ... :) –

+0

Уверенная вещь @Infinity, рада помочь. –

+2

Вау, спасибо @Yar! Это было именно то, что мне нужно, и избавило меня от боли. – ragamufin

11

Пожалуйста, обратите внимание, что если пользователь может выбрать для использования «раздвоение» клавиатуры на IPad, а затем UIKeyboardDidShowNotification/* UIKeyboardDidHideNotification * уведомления не будут уволены. Вместо этого, UIKeyboardDidChangeFrameNotification уведомление будет выпущено как на шоу, так и на скрытие. Вам нужно будет проанализировать keyboardFrame.origin.y, чтобы выяснить, что именно происходит (показать или скрыть).

+0

От iOS 5. Спасибо! :) –

Смежные вопросы