¿Cómo agregar una acción en la tecla de retorno UITextField?

91

Tengo un botón y un campo de texto en mi vista. cuando hago clic en el campo de texto, aparece un teclado y puedo escribir en el campo de texto y también puedo descartar el teclado haciendo clic en el botón agregando:

[self.inputText resignFirstResponder];

Ahora quiero habilitar la tecla de retorno del teclado. cuando presione en el teclado, el teclado desaparecerá y algo sucederá. ¿Cómo puedo hacer esto?

razibdeb
fuente
1
Posible duplicado: stackoverflow.com/questions/4761648/…
wquist

Respuestas:

186

Asegúrese de que "self" se suscriba UITextFieldDelegatee inicialice inputText con:

self.inputText.delegate = self;

Agrega el siguiente método a "self":

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

O en Swift:

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

Con estilo de extensión en swift 3.0

Primero, configure el delegado para su campo de texto.

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

Luego se ajusta a UITextFieldDelegatela extensión de su controlador de vista

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

Si bien las otras respuestas funcionan correctamente, prefiero hacer lo siguiente:

En viewDidLoad (), agregue

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

y definir la función

@IBAction func onReturn() {
    self.textField.resignFirstResponder()
    // do whatever you want...
}
Mal funcionamiento
fuente
-1

Utilice el mecanismo Target-Action UIKit para el evento UIE "primaryActionTriggered" enviado desde UITextField cuando se presiona un botón de terminado del teclado.

textField.addTarget(self, action: Selector("actionMethodName"), for: .primaryActionTriggered)
Blazej SLEBODA
fuente