Saya sudah mencari-cari ini tapi sepertinya saya tidak bisa menemukannya. Saya tahu cara menghapus keyboard menggunakan Objective-C
tetapi saya tidak tahu bagaimana melakukannya dengan menggunakan Swift
? Apakah ada yang tahu?
ios
swift
uikeyboard
laguna
sumber
sumber
Jawaban:
Berikut adalah cara lain untuk melakukan tugas ini jika Anda akan menggunakan fungsi ini secara berganda
UIViewControllers
:Sekarang di setiap
UIViewController
, yang harus Anda lakukan adalah memanggil fungsi ini:Fungsi ini dimasukkan sebagai fungsi standar dalam repo saya yang berisi banyak Ekstensi Swift yang bermanfaat seperti ini, periksa: https://github.com/goktugyil/EZSwiftExtensions
sumber
didSelectRowAtIndexPath
.tap.cancelsTouchesInView = false
. Setidaknya itu menyelesaikannya untuk saya. Semoga ini bisa membantu seseorangJawaban atas pertanyaan Anda tentang cara mengabaikan keyboard di Xcode 6.1 menggunakan Swift di bawah ini:
( Sumber informasi ini ).
sumber
Swift 4 bekerja
Buat ekstensi seperti di bawah ini & panggil
hideKeyboardWhenTappedAround()
di pengontrol tampilan Base Anda.Paling penting untuk memanggil di Base View Controller Anda sehingga tidak perlu menelepon sepanjang waktu di semua pengontrol tampilan.
sumber
Anda bisa menelepon
pada instance UIResponder, seperti UITextField. Jika Anda menyebutnya pada tampilan yang saat ini menyebabkan keyboard ditampilkan, maka keyboard tersebut akan diberhentikan.
sumber
sumber
untuk Swift 3 sangat sederhana
jika Anda ingin menyembunyikan keyboard saat menekan tombol RETURN
tetapi dalam kasus kedua Anda juga harus meneruskan delegasi dari semua textFields ke ViewController di Main.Storyboard
sumber
unrecognized selector sent to instance
dengan kode ini.Swift 3: Cara termudah untuk mengabaikan keyboard:
sumber
Jawaban Dash benar dan disukai. Pendekatan yang lebih "bumi hangus" adalah menelepon
view.endEditing(true)
. Ini menyebabkanview
dan semua subview untukresignFirstResponder
. Jika Anda tidak memiliki referensi ke tampilan yang ingin Anda abaikan, ini adalah solusi yang retas namun efektif.sumber
Swift 5 hanya dua baris sudah cukup. Tambahkan ke Anda
viewDidLoad
harus bekerja.Jika gerakan ketuk Anda memblokir beberapa sentuhan lain, maka tambahkan baris ini:
sumber
Di storyboard:
sumber
Swift 3:
Ekstensi dengan
Selector
sebagai parameter untuk dapat melakukan hal-hal tambahan dalam fungsi pemberhentian dancancelsTouchesInView
untuk mencegah distorsi dengan sentuhan pada elemen lain dari tampilan.Pemakaian:
sumber
Gunakan IQKeyboardmanager yang akan membantu Anda menyelesaikan dengan mudah .....
/////////////////////////////////////////
! [cara menonaktifkan keyboard ..] [1]
sumber
Saya menemukan solusi terbaik termasuk jawaban yang diterima dari @Esqarrouth, dengan beberapa penyesuaian:
Baris
tap.cancelsTouchesInView = false
sangat penting: memastikan bahwaUITapGestureRecognizer
elemen-elemen lain pada tampilan tidak mencegah interaksi pengguna.Metode
dismissKeyboard()
itu diubah menjadi sedikit kurang elegandismissKeyboardView()
. Ini karena dalam basis kode proyek saya yang cukup lama, ada beberapa kali di manadismissKeyboard()
sudah digunakan (saya bayangkan ini tidak biasa), menyebabkan masalah kompiler.Kemudian, seperti di atas, perilaku ini dapat diaktifkan di Pengontrol Tampilan individual:
sumber
Jika Anda menggunakan tampilan gulir, Itu bisa jauh lebih sederhana.
Cukup pilih
Dismiss interactively
di storyboard.sumber
Di Swift 4, tambahkan @objc:
Di viewDidLoad:
Fungsi:
sumber
Tambahkan ekstensi ini ke ViewController Anda:
sumber
Untuk memperluas jawaban Esqarrouth , saya selalu menggunakan yang berikut ini untuk mengabaikan keyboard, terutama jika kelas dari mana saya menolak keyboard tidak memiliki
view
properti dan / atau bukan subkelas dariUIView
.Dan, untuk kenyamanan, ekstensi berikut ke
UIApplcation
kelas:sumber
sumber
Sebagai seorang programmer pemula dapat membingungkan ketika orang menghasilkan tanggapan yang lebih terampil dan tidak perlu ... Anda tidak perlu melakukan hal-hal rumit yang ditunjukkan di atas! ...
Berikut adalah pilihan paling sederhana ... Jika keyboard Anda muncul sebagai respons terhadap bidang teks - Di dalam fungsi layar sentuh Anda, tambahkan saja fungsi resignFirstResponder . Seperti yang ditunjukkan di bawah ini - keyboard akan ditutup karena Responder Pertama dilepaskan (keluar dari rantai Responder) ...
sumber
Saya telah menggunakan IQKeyBoardManagerSwift untuk keyboard. mudah digunakan. cukup Tambahkan pod 'IQKeyboardManagerSwift'
Impor IQKeyboardManagerSwift dan tulis kode
didFinishLaunchingWithOptions
diAppDelegate
.sumber
Liner satu ini mengundurkan diri Keyboard dari semua (apa saja) UITextField di UIView
sumber
Hanya satu baris kode dalam
viewDidLoad()
metode:sumber
Dengan cepat Anda bisa menggunakannya
sumber
Untuk Swift3
Daftarkan recogniser acara di viewDidLoad
maka kita perlu menambahkan gerakan ke tampilan dalam viewDidLoad yang sama.
Maka kita perlu menginisialisasi metode yang terdaftar
sumber
Posting sebagai jawaban baru karena edit saya pada jawaban @ King-Wizard ditolak.
Jadikan kelas Anda sebagai delegasi dari UITextField dan ganti sentuhanBegan.
Cepat 4
sumber
Anda juga dapat menambahkan pengenal isyarat ketuk untuk mengundurkan diri keyboard. : D
sumber
Kemungkinan lain adalah dengan menambahkan tombol besar tanpa konten yang ada di bawah semua tampilan yang perlu Anda sentuh. Berikan tindakan bernama:
Masalah dengan pengenal isyarat bagi saya, itu juga menangkap semua sentuhan yang ingin saya terima oleh tableViewCells.
sumber
Jika Anda memiliki pandangan lain yang harus menerima sentuhan juga Anda harus mengatur
cancelsTouchesInView = false
Seperti ini:
sumber
Coba ini, Ini Bekerja
sumber
Ketika ada lebih dari satu bidang teks dalam tampilan
Untuk mengikuti rekomendasi @ modocache untuk menghindari panggilan
view.endEditing()
, Anda dapat melacak bidang teks yang menjadi responden pertama, tetapi itu berantakan dan rentan kesalahan.Alternatifnya adalah memanggil
resignFirstResponder()
semua bidang teks di viewcontroller . Berikut adalah contoh membuat koleksi semua bidang teks (yang dalam kasus saya diperlukan untuk kode validasi):Dengan koleksi yang tersedia, mudah untuk mengulangi semuanya:
Jadi sekarang Anda dapat memanggil
dismissKeyboard()
pengenal isyarat Anda (atau di mana pun yang sesuai untuk Anda). Kekurangannya adalah Anda harus mempertahankan daftarUITextField
ketika Anda menambah atau menghapus bidang.Komentar diterima. Jika ada masalah dengan memanggil
resignFirstResponder()
kontrol yang bukan responden pertama, atau jika ada cara non-kereta yang mudah dan terjamin untuk melacak responden pertama saat ini, saya ingin mendengarnya!sumber