UITextField - menangkap acara tombol kembali


101

Bagaimana saya bisa mendeteksi ketika pengguna menekan tombol keyboard "kembali" saat mengedit UITextField? Saya perlu melakukan ini untuk menutup keyboard saat pengguna menekan tombol "kembali".

Terima kasih.

Jawaban:


212
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return NO;
}

Jangan lupa untuk menempatkan delegasi di storyboard ...

masukkan deskripsi gambar di sini


47
Pastikan pengontrol tampilan Anda disetel sebagai delegasi bidang teks.
zekel

1
Terima kasih. Bagi saya, saya mengatur delegasi melalui self.yourTextField.delegate = self;. Bahkan beberapa bidang teks juga berfungsi.
haxpor

@Praxiteles Ini sekarang dapat dilakukan di storyboard tanpa memerlukan delegasi, silakan periksa jawaban di bawah.
Blake Lockley

51

Delegasi tidak diperlukan, berikut satu baris:

- (void)viewDidLoad {
    [textField addTarget:textField
                  action:@selector(resignFirstResponder)
        forControlEvents:UIControlEventEditingDidEndOnExit];
}

Sayangnya Anda tidak dapat melakukan ini secara langsung di Storyboard Anda (Anda tidak dapat menghubungkan tindakan ke kontrol yang memancarkannya di Storyboard), tetapi Anda dapat melakukannya melalui tindakan perantara.


1
Saya hanya ingin menunjukkan bahwa UIControlEventEditingDidEndOnExitacara akan dikirim hanya jika textFieldShouldReturn:metode delegasi mengembalikan YA (tanpa harus mengundurkan diri dari bidang teks).
alex-i

Anda tidak perlu menerapkan delegasi. Tetapi mungkin jika Anda melakukannya Anda harus kembali YESuntuk metode ini.
mxcl

9

SWIFT 3.0

override open func viewDidLoad() {
    super.viewDidLoad()    
    textField.addTarget(self, action: #selector(enterPressed), for: .editingDidEndOnExit)
}

di enterPressed () fungsi letakkan semua perilaku yang Anda cari

func enterPressed(){
    //do something with typed text if needed
    textField.resignFirstResponder()
}

8

Sekarang Anda dapat melakukan ini papan cerita menggunakan acara yang dikirim 'Did End On Exit'.

Dalam subkelas pengontrol tampilan Anda:

 @IBAction func textFieldDidEndOnExit(textField: UITextField) {
    textField.resignFirstResponder()
}

Di papan cerita Anda untuk bidang teks yang diinginkan:

masukkan deskripsi gambar di sini


Ini jawaban yang benar sekarang.
Psiloc

3

Versi Swift menggunakan UITextFieldDelegate:

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    resignFirstResponder()
    return false
}

2

Cepat 5

textField.addTarget(textField, action: #selector(resignFirstResponder), for: .editingDidEndOnExit)

-1
- (BOOL)textFieldShouldReturn:(UITextField *)txtField 
{
[txtField resignFirstResponder];
return NO;
}

Ketika tombol enter diklik maka metode delegasi ini dipanggil. Anda dapat menangkap tombol kembali dari metode delegasi ini.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.