web-dev-qa-db-fra.com

Comment masquer le clavier lorsque j'appuie sur la touche Retour dans un UITextField?

En cliquant dans un champ de texte, le clavier apparaît ... .. Comment puis-je le masquer lorsque l'utilisateur appuie sur la touche Retour?

133
aden

Commencez par déléguer votre fichier pour UITextField

@interface MYLoginViewController () <UITextFieldDelegate>

@end

Ajoutez ensuite cette méthode à votre code. 

- (BOOL)textFieldShouldReturn:(UITextField *)textField {        
    [textField resignFirstResponder];
    return YES;
}

Ajoutez également self.textField.delegate = self;

264
Saurabh

Dans viewDidLoad déclarez: 

[yourTextField setDelegate:self];

Ensuite, incluez le remplacement de la méthode delegate:

-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];
    return YES;
}
59
oscar castellon

Dans Swift faire comme ceci:
En premier dans votre ViewController, implémentez cette UITextFieldDelegate

class MyViewController: UIViewController, UITextFieldDelegate {
....
}

Ajoutez maintenant un délégué à une TextField dans laquelle vous voulez fermer le clavier lorsque vous appuyez sur return, soit dans la méthode viewDidLoad comme ci-dessous, soit à l'endroit où vous l'initialisez .

override func viewDidLoad() {

    super.viewDidLoad()   
    myTextField.delegate = self
}

Maintenant, ajoutez cette méthode.

func textFieldShouldReturn(textField: UITextField) -> Bool {

    textField.resignFirstResponder()
    return true
}
12
Homam

Essayez ceci dans Swift ,

Étape 1: Définissez le délégué comme étant autonome pour votre textField

textField.delegate = self

Étape 2: Ajoutez ce UITextFieldDelegate sous votre déclaration de classe,

extension YourClassName: UITextFieldDelegate {
    func textFieldShouldReturn(textField: UITextField) -> Bool {
         textField.resignFirstResponder()
        return true
    }
}
11
Zaid Pathan

Swift 4

Définissez le délégué de UITextField dans le contrôleur de vue, field.delegate = self, puis:

extension ViewController: UITextFieldDelegate {
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        // don't force `endEditing` if you want to be asked for resigning
        // also return real flow value, not strict, like: true / false
        return textField.endEditing(false)
    }
}
1
dimpiax

Vous pouvez connecter "Primary Action Triggered" (clic droit sur UITextField) à un IBAction et vous pouvez démissionner du premier répondant (sans délégation). Exemple .__ (Swift 4):

@IBAction func textFieldPrimaryAction(_ sender: UITextField) {
    sender.resignFirstResponder()
    ...
}
1
Ferenc Kiss

set delegate of UITextField, et la méthode textFieldShouldReturn au-dessus, dans cette méthode, écrit simplement les deux lignes suivantes:

[textField resignFirstResponder];
return YES;

c'est tout. Avant d'écrire un code, n'oubliez pas de définir le délégué d'une UITextField et de définir le type de clé de retour sur "Terminé" dans la fenêtre des propriétés (commande + touche majuscule + I).

1
Matrix

Essaye ça,

[textField setDelegate: self];

Ensuite, dans la méthode déléguée textField

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return YES;
}
1
Vineesh TP

Ok, je pense que pour un novice, les choses pourraient être un peu déroutantes. Je pense que la bonne réponse est un mélange de tout ce qui précède, du moins dans Swift4. 

Créez une extension ou utilisez le ViewController dans lequel vous souhaitez l’utiliser, mais assurez-vous d’implémenter UITextFieldDelegate. Par souci de réutilisabilité, j'ai trouvé plus facile d'utiliser une extension: 

extension UIViewController : UITextFieldDelegate {
    ...
}

mais l'alternative fonctionne aussi:

class MyViewController: UIViewController {
    ...
}

Ajoutez la méthode textFieldShouldReturn (selon votre option précédente, soit dans l'extension, soit dans votre ViewController).

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    return textField.endEditing(false)
}

Dans votre méthode viewDidLoad, définissez le délégué du champ de texte sur self

@IBOutlet weak var myTextField: UITextField!
...

override func viewDidLoad() {
    ..
    myTextField.delegte = self;
    ..
}

Cela devrait être tout. Maintenant, lorsque vous appuyez sur return, la textFieldShouldReturn doit être appelée.

0
Alex
[textField resignFirstResponder];

Utilisez ceci 

0
DURGESH Chaurasiya

Définissez cette classe, puis définissez votre champ de texte pour utiliser la classe, ce qui automatise l'ensemble du clavier masqué lorsque vous appuyez automatiquement sur la touche Entrée.

class TextFieldWithReturn: UITextField, UITextFieldDelegate
{

    required init?(coder aDecoder: NSCoder) 
    {
        super.init(coder: aDecoder)
        self.delegate = self
    }

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

}

Ensuite, tout ce que vous devez faire dans le storyboard est de définir les champs pour utiliser la classe:

enter image description here

0
iphaaw