18 августа 2010 г.

Размер клавиатуры в iOS

Иногда необходимо узнать размер виртуальной клавиатуры из приложения. Например чтоб изменить положение/размер ваших визуальных компонентов на view. До появления iPad/iPhone 4 можно было смело использовать константы. С выходом устройств с различным разрешением экрана константы использовать нельзя.

Первое, что нам понадобится, зарегистрировать слушателя на появление клавиатуры на экране (делается это например в методе viewDidAppear: вашего UIViewController):

  1. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShown:) name:UIKeyboardWillShowNotification object:nil];

в конце не забываем отписаться от получения сообщений повеления клавиатуры

  1. [[NSNotificationCenter defaultCenter] removeObserver:self];

а вот и сама функция-слушатель:

  1. - (void) keyboardWillShown:(NSNotification*) aNotification
  2. {
  3.   NSDictionary* info = [aNotification userInfo];
  4.  
  5.   #ifdef __IPHONE_4_0
  6.   NSValue* aValue = [info objectForKey:UIKeyboardBoundsUserInfoKey];
  7.   if (!aValue)
  8.   {
  9.     aValue = [info objectForKey:UIKeyboardFrameEndUserInfoKey];
  10.   }
  11.   #else
  12.   NSValue* aValue = [info objectForKey:UIKeyboardBoundsUserInfoKey];
  13.   #endif
  14.  
  15.   CGSize keyboardSize = [aValue CGRectValue].size;
  16.   NSLog(@"%.1fx%.1f", keyboardSize.width, keyboardSize.height);
  17. }

тут мы просто печатаем в лог размер виртуальной клавиатуры.

Пример, таблица в каждом элементе которой есть UITextField при выборе которого таблица центруется на этом элементе.

Комментариев нет:

Отправить комментарий