Mengklik di bidang teks membuat keyboard muncul. Bagaimana cara menyembunyikannya ketika pengguna menekan tombol kembali?
Mengklik di bidang teks membuat keyboard muncul. Bagaimana cara menyembunyikannya ketika pengguna menekan tombol kembali?
Jawaban:
Pertama buat delegasi file Anda untuk UITextField
@interface MYLoginViewController () <UITextFieldDelegate>
@end
Kemudian tambahkan metode ini ke kode Anda.
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
Juga tambahkan self.textField.delegate = self;
Dalam viewDidLoad
menyatakan:
[yourTextField setDelegate:self];
Kemudian, sertakan override metode delegate:
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
setDelegate:
pengingat. Pasti sudah lupa dan kode tidak berfungsi sebelumnya.
Coba ini di Swift ,
Langkah 1: Tetapkan delegasi sebagai diri AndatextField
textField.delegate = self
Langkah 2: Tambahkan UITextFieldDelegate ini di bawah deklarasi kelas Anda,
extension YourClassName: UITextFieldDelegate {
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
}
Dalam cepat lakukan seperti ini:
Pertama dalam ViewController
mengimplementasikan ini UITextFieldDelegate
Untuk misalnya.
class MyViewController: UIViewController, UITextFieldDelegate {
....
}
Sekarang tambahkan delegasi ke TextField
di mana Anda ingin mengabaikan keyboard ketika kembali disadap baik dalam viewDidLoad
metode seperti di bawah ini atau di mana Anda menginisialisasi itu. Untuk misalnya.
override func viewDidLoad() {
super.viewDidLoad()
myTextField.delegate = self
}
Sekarang tambahkan metode ini.
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
Coba ini,
[textField setDelegate: self];
Kemudian, dalam metode delegasi textField
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
atur delegasi dari UITextField
, dan over ride, textFieldShouldReturn
metode, dalam metode itu hanya menulis dua baris berikut:
[textField resignFirstResponder];
return YES;
itu dia. Sebelum menulis kode jangan lupa untuk mengatur delegasi dari UITextField
dan mengatur jenis kunci Kembali ke "Selesai" dari jendela properti. (Perintah + shift + I).
Anda dapat menghubungkan "Tindakan Utama Dipicu" (klik kanan pada UITextField) dengan IBAction dan Anda dapat mengundurkan diri responden pertama (tanpa delegasi). Contoh (Swift 4):
@IBAction func textFieldPrimaryAction(_ sender: UITextField) {
sender.resignFirstResponder()
...
}
Tetapkan delegasi UITextField
in view controller field.delegate = self
,, dan kemudian:
extension ViewController: UITextFieldDelegate {
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
// don't force `endEditing` if you want to be asked for resigning
// also return real flow value, not strict, like: true / false
return textField.endEditing(false)
}
}
Jika Anda ingin menyembunyikan keyboard untuk penggunaan keyboard tertentu.
[self.view resignFirstResponder];
Jika Anda ingin menyembunyikan keyboard apa pun dari tampilan gunakan[self.view endEditing:true];
Ok, saya pikir untuk pemula hal mungkin agak membingungkan. Saya pikir jawaban yang benar adalah campuran dari semua hal di atas, setidaknya di Swift4.
Baik buat ekstensi atau gunakan ViewController di mana Anda ingin menggunakan ini tetapi pastikan untuk mengimplementasikan UITextFieldDelegate. Demi dapat digunakan kembali, saya merasa lebih mudah menggunakan ekstensi:
extension UIViewController : UITextFieldDelegate {
...
}
tetapi alternatifnya juga bekerja:
class MyViewController: UIViewController {
...
}
Tambahkan metode textFieldShouldReturn (tergantung pada opsi Anda sebelumnya, baik dalam ekstensi atau di ViewController Anda)
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
return textField.endEditing(false)
}
Dalam metode viewDidLoad Anda, setel delegasi bidang teks ke mandiri
@IBOutlet weak var myTextField: UITextField!
...
override func viewDidLoad() {
..
myTextField.delegte = self;
..
}
Itu saja. Sekarang, ketika Anda menekan return
yang textFieldShouldReturn
harus disebut.
Tentukan kelas ini dan kemudian setel bidang teks Anda untuk menggunakan kelas dan ini mengotomatiskan seluruh keyboard yang bersembunyi ketika kembali ditekan secara otomatis.
class TextFieldWithReturn: UITextField, UITextFieldDelegate
{
required init?(coder aDecoder: NSCoder)
{
super.init(coder: aDecoder)
self.delegate = self
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool
{
textField.resignFirstResponder()
return true
}
}
Maka yang perlu Anda lakukan di storyboard adalah mengatur bidang untuk menggunakan kelas: