it-swarm.com.ru

Как добавить действие на ключ возврата UITextField?

У меня есть кнопка и текстовое поле текста на мой взгляд. когда я нажимаю на текстовое поле, появляется клавиатура, и я могу писать в текстовом поле, а также я могу закрыть клавиатуру, нажав на кнопку, добавив:

[self.inputText resignFirstResponder];

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

81
razibdeb

Убедитесь, что "self" подписывается на UITextFieldDelegate и инициализируйте inputText с помощью:

self.inputText.delegate = self;

Добавьте следующий метод к "себе":

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    if (textField == self.inputText) {
        [textField resignFirstResponder];
        return NO;
    }
    return YES;
}

Или в Свифте:

func textFieldShouldReturn(textField: UITextField) -> Bool {
    if textField == inputText {
        textField.resignFirstResponder()
        return false
    }
    return true
}
167
Ander

со стилем расширения в Swift 3.

Сначала настройте делегата для своего текстового поля.

override func viewDidLoad() {
    super.viewDidLoad()
    self.inputText.delegate = self
}

Затем соответствуйте UITextFieldDelegate в расширении вашего контроллера представления

extension YourViewController: UITextFieldDelegate {
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        if textField == inputText {
            textField.resignFirstResponder()
            return false
        }
        return true
    }
}
7
Fangming

Хотя остальные ответы работают правильно, я предпочитаю делать следующее:

В viewDidLoad () добавьте

self.textField.addTarget(self, action: #selector(onReturn), for: UIControl.Event.editingDidEndOnExit)

и определить функцию

@IBAction func onReturn() {
    self.textField.resignFirstResponder()
    // do whatever you want...
}
0
Malfunction