Bagaimana cara saya mendeteksi ketika keyboard ditampilkan dan disembunyikan dari aplikasi saya?
ios
iphone
iphone-sdk-3.0
pengguna198725878
sumber
sumber
Jawaban:
Dalam metode ViewDidLoad kelas Anda, siapkan untuk mendengarkan pesan tentang keyboard:
Kemudian dalam metode yang Anda tentukan (dalam kasus ini
keyboardDidShow
dankeyboardDidHide
) Anda dapat melakukan sesuatu tentangnya:sumber
UITextFieldDelegat
e, lalu terapkantextFieldShouldReturn:
metode tersebut. Anda akan mendapatkan yangtextField
baru saja dimasukkan sebagai argumen, yang dapat Anda bandingkan dengan bidang teks Anda sendiri dan gulirscrollView
sehingga bidang teks yang sesuai ditampilkan.Anda mungkin hanya perlu
addObserver
masukviewDidLoad
. NamunaddObserver
masukviewWillAppear
danremoveObserver
masukviewWillDisappear
mencegah kerusakan langka yang terjadi saat Anda mengubah pandangan.Swift 4.2.0
Swift 3 dan 4
Swift yang lebih tua
sumber
deinit
seperti ini:deinit { NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardWillShowNotification, object: nil) NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardWillHideNotification, object: nil) }
deinit { NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIKeyboardWillShow, object: nil) NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIKeyboardWillHide, object: nil) }
Cepat 3:
sumber
Cepat 4:
Selanjutnya, menambahkan metode untuk berhenti mendengarkan pemberitahuan ketika kehidupan objek berakhir: -
sumber
+=
tampaknya membuat insets mendapatkan lebih besar dan lebih besar.UIResponder.keyboardWillShowNotification
danUIResponder.keyboardWillHideNotification
, dan tombol info keyboard adalahUIResponder.keyboardFrameBeginUserInfoKey
.Cepat - 4
sumber
Lihat bagian Mengelola Keyboard dari "Teks, Web, dan Panduan Pemrograman Mengedit" untuk informasi tentang pelacakan keyboard yang ditampilkan atau disembunyikan, dan cara menampilkan / menutupnya secara manual.
sumber
Anda ingin mendaftarkan diri Anda untuk 2 pemberitahuan keyboard:
Posting bagus tentang cara menyesuaikan TextField Anda ke keyboard - http://iosdevelopertips.com/user-interface/adjust-textfield-hidden-by-keyboard.html
sumber
Di Swift 4.2, nama notifikasi telah dipindahkan ke namespace yang berbeda. Jadi sekarang
sumber
Cepat 5
Ada jawaban di atas benar. Meskipun saya lebih suka membuat pembantu untuk menyelesaikan file
notification's observers
.Keuntungan:
Kode sampel:
Cara Penggunaan:
}
sumber
Cepat 4 -
dd 20 october 2017
sumber
Jika Anda memiliki lebih dari satu
UITextField
dan Anda perlu melakukan sesuatu ketika (atau sebelum) keyboard muncul atau menghilang, Anda dapat menerapkan pendekatan ini.Tambahkan
UITextFieldDelegate
ke kelas Anda. Tetapkan penghitung bilangan bulat, katakanlah:Setel penghitung ini ke nol di suatu tempat
viewDidLoad
. Kemudian, terapkantextFieldShouldBeginEditing
dantextFieldShouldEndEditing
delegasikan metode.Yang pertama tambahkan 1 ke editCounter. Jika nilai editCounter menjadi 1 - ini berarti keyboard akan muncul (jika Anda mengembalikan YA). Jika editCounter> 1 - ini berarti keyboard sudah terlihat dan UITextField lain memegang fokus.
Dalam
textFieldShouldEndEditing
kurangi 1 dari editCounter. Jika Anda mendapatkan nol - keyboard akan ditutup, jika tidak maka akan tetap ada di layar.sumber
Anda dapat menggunakan perpustakaan KBKeyboardObserver . Ini berisi beberapa contoh dan menyediakan antarmuka yang sederhana.
sumber
Ada CocoaPods untuk memfasilitasi pengamatan terhadap
NSNotificationCentr
visibilitas keyboard di sini: https://github.com/levantAJ/Keyhipod 'Keyhi'
sumber
Jadi ah, inilah jawaban sebenarnya sekarang.
sumber