Как я могу определить, когда пользователь нажал кнопку "вернуться" при редактировании UITextField? Мне нужно сделать это, чтобы убрать клавиатуру, когда пользователь нажал кнопку "вернуться".
Спасибо.
Как я могу определить, когда пользователь нажал кнопку "вернуться" при редактировании UITextField? Мне нужно сделать это, чтобы убрать клавиатуру, когда пользователь нажал кнопку "вернуться".
Спасибо.
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return NO;
}
Не забудьте указать делегата в раскадровке...
Делегирование не требуется, здесь однострочный:
- (void)viewDidLoad {
[textField addTarget:textField
action:@selector(resignFirstResponder)
forControlEvents:UIControlEventEditingDidEndOnExit];
}
К сожалению, вы не можете прямо сделать это в своей раскадровке (вы не можете подключать действия к элементу управления, который испускает их в Storyboard), но вы можете сделать это через посредническое действие.
SWIFT 3.0
override open func viewDidLoad() {
super.viewDidLoad()
textField.addTarget(self, action: #selector(enterPressed), for: .editingDidEndOnExit)
}
в функции enterPressed() помещается все ваши действия после
func enterPressed(){
//do something with typed text if needed
textField.resignFirstResponder()
}
Теперь вы можете сделать это в раскадровке, используя отправленное событие "Сделал конец при выходе".
На ваш взгляд, подкласс контроллера:
@IBAction func textFieldDidEndOnExit(textField: UITextField) {
textField.resignFirstResponder()
}
В вашей раскадровке для нужного текстового поля:
Swift версия с использованием UITextFieldDelegate:
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
resignFirstResponder()
return false
}
- (BOOL)textFieldShouldReturn:(UITextField *)txtField
{
[txtField resignFirstResponder];
return NO;
}
При нажатии кнопки ввода происходит вызов этого метода делегата. Вы можете захватить кнопку возврата из этого метода делегата.