como adicionar uma ação na tecla de retorno UITextField?


90

Eu tenho um botão e um campo de texto em minha visão. quando clico no campo de texto, um teclado aparece e posso escrever no campo de texto e também posso dispensar o teclado clicando no botão adicionando:

[self.inputText resignFirstResponder];

Agora quero ativar a tecla de retorno do teclado. quando eu pressiono no teclado o teclado desaparecerá e algo acontecerá. Como posso fazer isso?


Respostas:


185

Certifique-se de que "self" se inscreve UITextFieldDelegatee inicializa o inputText com:

self.inputText.delegate = self;

Adicione o seguinte método a "self":

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

Ou em Swift:

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

10

Com estilo de extensão em Swift 3.0

Primeiro, configure delegado para seu campo de texto.

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

Em seguida, conformar-se com UITextFieldDelegatea extensão do controlador de visualização

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

4

Embora as outras respostas funcionem corretamente, prefiro fazer o seguinte:

Em viewDidLoad (), adicione

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

e definir a função

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

-1

Use o mecanismo Target-Action UIKit para UIEvent "primaryActionTriggered" enviado de UITextField quando um botão concluído do teclado é pressionado.

textField.addTarget(self, action: Selector("actionMethodName"), for: .primaryActionTriggered)
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.