UITextField - захватить событие кнопки возврата - PullRequest
93 голосов
/ 10 июня 2009

Как я могу определить, когда пользователь нажал кнопку возврата на клавиатуре при редактировании UITextField? Мне нужно сделать это, чтобы закрыть клавиатуру, когда пользователь нажал кнопку «возврат».

Спасибо.

Ответы [ 6 ]

207 голосов
/ 10 июня 2009
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return NO;
}

Не забудьте установить делегата в раскадровке ...

enter image description here

45 голосов
/ 09 января 2014

Делегирование не требуется, вот одна строка:

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

К сожалению, вы не можете напрямую сделать это на своей раскадровке (вы не можете связать действия с элементом управления, который их излучает в раскадровке), но вы можете сделать это с помощью промежуточного действия.

5 голосов
/ 28 февраля 2018

Теперь вы можете сделать это в раскадровке, используя отправленное событие «Завершено при выходе».

По вашему мнению, подкласс контроллера:

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

В вашей раскадровке для нужного текстового поля:

enter image description here

5 голосов
/ 21 августа 2017

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()
}
1 голос
/ 22 сентября 2018

Swift версия с использованием UITextFieldDelegate:

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    resignFirstResponder()
    return false
}
0 голосов
/ 30 апреля 2016
- (BOOL)textFieldShouldReturn:(UITextField *)txtField 
{
[txtField resignFirstResponder];
return NO;
}

Когда нажата кнопка ввода, вызывается этот метод делегата. Вы можете получить кнопку возврата из этого метода делегата.

...