Нет способа (AFAIK) получить размеры клавиатуры. Однако он постоянен, по крайней мере, в каждой версии iPhone.
Если вы рассчитываете положение панели инструментов как смещение от ДНА вашего взгляда и учитывает размер вашего взгляда, тогда вам не нужно беспокоиться о том, присутствует ли панель навигации или нет.
* 1005 Е.Г. *
#define KEYBOARD_HEIGHT 240 // example - can't remember the exact size
#define TOOLBAR_HEIGHT 30
toolBarRect.origin.y = viewRect.size.height - KEYBOARD_HEIGHT - TOOLBAR_HEIGHT;
// move toolbar either directly or with an animation
Вместо определения можно легко создать функцию keyboardHeight
, которая возвращает размер в зависимости от того, отображается ли клавиатура, и переместить позиционирование этой панели инструментов в отдельную функцию, которая реорганизует ваш макет.
Также это может зависеть от того, где вы делаете это позиционирование, поскольку возможно, что размер вашего вида может изменяться между загрузкой и отображением в зависимости от настроек вашей навигационной панели. Я считаю, что лучшее место для этого было бы в ViewWillAppear.