Tidak ada cara (AFAIK) untuk mendapatkan dimensi tampilan keyboard. Namun itu konstan, setidaknya di setiap versi iPhone sejauh ini.
Jika Anda menghitung posisi bilah alat sebagai penyeimbang dari BAWAH tampilan Anda, dan memperhitungkan ukuran tampilan Anda, maka Anda tidak perlu khawatir apakah bilah navigasi ada atau tidak.
Misalnya
#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
Alih-alih menentukan, Anda dapat dengan mudah membuat keyboardHeight
fungsi yang mengembalikan ukuran berdasarkan apakah keyboard sedang ditampilkan, dan memindahkan pemosisian bilah alat ini ke dalam fungsi terpisah yang mengatur ulang tata letak Anda.
Juga dapat bergantung di mana Anda melakukan pemosisian ini karena mungkin saja ukuran tampilan Anda dapat berubah antara dimuat dan ditampilkan berdasarkan pengaturan navbar Anda. Saya yakin tempat terbaik untuk melakukannya adalah di viewWillAppear.