Nie ma sposobu (AFAIK), aby uzyskać wymiary widoku klawiatury. Jest jednak stały, przynajmniej w każdej dotychczasowej wersji iPhone'a.
Jeśli obliczysz pozycję paska narzędzi jako odsunięcie od DOLNEGO widoku i weźmiesz pod uwagę rozmiar widoku, nie powinieneś się martwić, czy pasek nawigacyjny jest obecny, czy nie.
Na przykład
#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
Zamiast definicji, możesz łatwo utworzyć plik keyboardHeight
funkcję, która zwraca rozmiar na podstawie tego, czy klawiatura jest wyświetlana, i przenieść to pozycjonowanie paska narzędzi do osobnej funkcji, która reorganizuje układ.
Może to również zależeć od tego, gdzie robisz to pozycjonowanie, ponieważ jest możliwe, że rozmiar widoku może się zmieniać między wczytywaniem a wyświetlaniem w zależności od konfiguracji paska nawigacyjnego. Uważam, że najlepszym miejscem do zrobienia tego będzie widok WillAppear.