IPhone-клавиатура, кнопка "Готово" и "ResignFirstResponder"
Это, наверное, немой вопрос, но я не могу найти ответ в документах. Во время нажатия кнопки "Готово" на всплывающей клавиатуре клавиатура исчезла? Я вижу много кода в Интернете, как это:
- (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
[theTextField resignFirstResponder];
return YES;
}
Когда я нажимаю кнопку "Готово" , клавиатура выскакивает вниз, а UITextField
уходит в отставку с первого ответчика.
Я предполагаю, что нажатие кнопки "Готово" не использовало, чтобы вызвать от UITextField
до resignFirstResponder
, но это поведение изменилось через некоторое время.
Я отлаживаю OS 3.0 - 3.1.3
Ответы
Ответ 1
Я сделал небольшой тестовый проект с помощью только UITextField и этого кода
#import <UIKit/UIKit.h>
@interface TextFieldTestViewController : UIViewController
<UITextFieldDelegate>
{
UITextField *textField;
}
@property (nonatomic, retain) IBOutlet UITextField *textField;
@end
#import "TextFieldTestViewController.h"
@implementation TextFieldTestViewController
@synthesize textField;
- (void)viewDidLoad
{
[self.textField setDelegate:self];
[self.textField setReturnKeyType:UIReturnKeyDone];
[self.textField addTarget:self
action:@selector(textFieldFinished:)
forControlEvents:UIControlEventEditingDidEndOnExit];
[super viewDidLoad];
}
- (IBAction)textFieldFinished:(id)sender
{
// [sender resignFirstResponder];
}
- (void)dealloc {
[super dealloc];
}
@end
Текстовое поле - это немодифицированный UITextField
, перетаскиваемый в NIB, с подключенной розеткой.
После загрузки приложения щелчок в текстовом поле вызывает клавиатуру. При нажатии кнопки "Готово" текстовое поле теряет фокус и оживляет клавиатуру. Обратите внимание, что совет по сети всегда должен использовать [sender resignFirstResponder]
, но это работает без него.
Ответ 2
В Xcode 5.1
Включить кнопку "Готово"
- В Attributes Inspector для UITextField в Storyboard найдите поле "Return Key" и выберите "Done"
Скрыть клавиатуру, когда нажата кнопка "Готово"
Ответ 3
Из документации (любой версии):
Это ваши приложения ответственность отклонить клавиатуру во время вашего выбора. Вы может отклонить клавиатуру в ответ к конкретному действию пользователя, например, к пользователь, нажимая определенную кнопку в ваш пользовательский интерфейс. Вы также можете настройте делегата текстового поля на отпустите клавиатуру, когда пользователь нажимает клавишу "возврат" на сама клавиатура. Увольнять клавиатуры, отправьте Отправить сообщение resignFirstResponder текстовое поле, которое в настоящее время является первым Ответчик. Это вызывает текст объект поля для завершения текущего сеанс редактирования (с делегатом объектов) и скрыть клавиатура.
Итак, вы должны как-то отправить resignFirstResponder. Но есть вероятность, что текстовое поле теряет фокус другим способом во время обработки textFieldShouldReturn: message. Это также приведет к исчезновению клавиатуры.
Ответ 4
Один код строки для кнопки "Готово": -
[yourTextField setReturnKeyType:UIReturnKeyDone];
И добавьте метод действия в valueChanged из TextField и добавьте эту строку -
[yourTextField resignFirstResponder];