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

91

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

[self.inputText resignFirstResponder];

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

разибдеб
источник
1
Возможный дубликат: stackoverflow.com/questions/4761648/…
wquist

Ответы:

186

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

self.inputText.delegate = self;

Добавьте следующий метод в «self»:

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

Или в Swift:

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    if textField == inputText {
        textField.resignFirstResponder()
        return false
    }
    return true
}
Андер
источник
11

Со стилем расширения в Swift 3.0

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

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
    }
}
Fangming
источник
4

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

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

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

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

@IBAction func onReturn() {
    self.textField.resignFirstResponder()
    // do whatever you want...
}
Неисправность
источник
-1

Используйте механизм UIKit целевого действия для события UIEvent primaryActionTriggered, отправляемого из UITextField при нажатии кнопки «Готово» на клавиатуре.

textField.addTarget(self, action: Selector("actionMethodName"), for: .primaryActionTriggered)
Блажей СЛЕБОДА
источник