Anda akan melihat bahwa metode "textFieldShouldReturn" menyediakan objek bidang teks yang telah menekan tombol DONE. Jika Anda mengatur TAG Anda dapat mengaktifkan bidang teks itu. Atau Anda dapat melacak dan membandingkan penunjuk objek dengan beberapa nilai anggota yang disimpan oleh penciptanya.
Pendekatan saya seperti ini untuk belajar mandiri:
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
NSLog(@"%s", __FUNCTION__);
bool fDidResign = [textField resignFirstResponder];
NSLog(@"%s: did %resign the keyboard", __FUNCTION__, fDidResign ? @"" : @"not ");
return fDidResign;
}
Sementara itu, saya memasukkan tes "validasi" yang menyangkal pengunduran diri berikut. Ini hanya untuk ilustrasi, jadi jika pengguna mengetik TIDAK! ke lapangan, tidak akan diberhentikan. Perilaku itu seperti yang saya inginkan, tetapi urutan output tidak seperti yang saya harapkan.
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField {
NSLog(@"%s", __FUNCTION__);
if( [[textField text] isEqualToString:@"NO!"] ) {
NSLog(@"%@", textField.text);
return NO;
} else {
return YES;
}
}
Berikut ini adalah output NSLog saya untuk penolakan ini diikuti oleh penerimaan. Anda akan melihat bahwa saya mengembalikan hasil pengunduran diri, tetapi saya mengharapkannya mengembalikan FALSE kepada saya untuk melaporkan kembali kepada penelepon ?! Selain itu, ia memiliki perilaku yang diperlukan.
13.313 StudyKbd [109: 207] - [StudyKbdViewController textFieldShouldReturn:]
13.320 StudyKbd [109: 207] - [StudyKbdViewController textFieldShouldEndEditing:]
13.327 StudyKbd [109: 207] TIDAK!
13.333 StudyKbd [109: 207] - [StudyKbdViewController textFieldShouldReturn:]: memang mengundurkan diri dari keyboard
59.891 StudyKbd [109: 207] - [StudyKbdViewController textFieldShouldReturn:]
59.897 StudyKbd [109: 207] - [StudyKbdViewController textFieldShouldEndEditing:]
59.917 StudyKbd [109: 207] - [StudyKbdViewController doneEditText]: TIDAK
59.928 StudyKbd [109: 207] - [StudyKbdViewController textFieldShouldReturn:]: memang mengundurkan diri dari keyboard