Dalam beberapa kasus, saya ingin menambahkan toolbar ke bagian atas keyboard iPhone (seperti di iPhone Safari saat Anda menavigasi elemen formulir, misalnya).
Saat ini saya menetapkan persegi panjang bilah alat dengan konstanta tetapi karena elemen antarmuka lainnya sedang berubah - bilah alat dan bilah navigasi di bagian atas layar - setiap kali kami membuat perubahan antarmuka kecil, bilah alat tidak sejajar.
Adakah cara untuk menentukan secara terprogram posisi keyboard dalam kaitannya dengan tampilan saat ini?
sumber
Jadi pada dasarnya:
Dalam metode init:
Dan kemudian memiliki metode yang disebutkan di atas untuk menyesuaikan posisi bilah:
Bisa membuatnya cantik dengan menganimasikan perubahan posisi dengan membungkusnya
sumber
UIKeyboardFrameBeginUserInfoKey
yang memberikan informasi yang sama.UIKeyboardFrameEndUserInfoKey
untuk mendapatkan bingkai terakhir (dalam koordinat layar) dari keyboard. Anda juga dapat menggunakanUIKeyboardAnimationDurationUserInfoKey
danUIKeyboardAnimationCurveUserInfoKey
untuk mendapatkan parameter lainnya yang Anda perlukan untuk benar-benar cocok dengan perilaku keyboard.Ini didasarkan pada jawaban yang ada dari tonklon - Saya hanya menambahkan cuplikan kode yang menunjukkan toolbar hitam semi transparan di atas keyboard, bersama dengan tombol "selesai" di sebelah kanan:
dan
-resignKeyboard
tampilannya seperti:Harapan yang membantu seseorang.
sumber
Jika Anda mendaftar untuk notifikasi keyboard, misalnya
UIKeyboardWillShowNotification
UIKeyboardWillHideNotification
, dll., Notifikasi yang Anda terima akan berisi batas keyboard diuserInfo
dict (UIKeyboardBoundsUserInfoKey
).Lihat
UIWindow
referensi kelas.sumber
Di versi 3.0 dan di atasnya Anda bisa mendapatkan durasi animasi dan kurva dari
userInfo
kamus notifikasi.misalnya, untuk menganimasikan ukuran tampilan guna memberi ruang bagi keyboard, daftar ke
UIKeyboardWillShowNotification
dan lakukan sesuatu seperti berikut:Lakukan animasi serupa untuk
UIKeyboardWillHideNotification
.sumber
Buat metode ini dan panggil di ViewWillLoad:
sumber
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
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.
sumber