2010-08-26 10 views
120

Cliquer sur un champ de texte fait apparaître le clavier. Comment le cacher lorsque l'utilisateur appuie sur la touche de retour?Comment cacher le clavier quand j'appuie sur la touche retour dans un UITextField?

+12

La bonne chose à propos Stack Overflow est que les questions beaucoup ont déjà répondu, en particulier les simples. Par conséquent, s'il vous plaît chercher des réponses d'abord, avant de demander. Voir, c'est simple: http://stackoverflow.com/search?q=iphone+hide+keyboard – Felixyz

+0

Ceci est une sous-classe de UITextfield qui modifie dynamiquement la UIReturnKey selon la condition de texte/chaîne: https://github.com/ codeinteractiveapps/OBReturnKeyTextField – CodeInteractive

Répondre

246

Faites d'abord votre délégué de fichier pour UITextField puis ajoutez cette méthode à votre code ..

-(BOOL) textFieldShouldReturn:(UITextField *)textField{ 

    [textField resignFirstResponder]; 
    return YES; 
} 
+1

Curieux, pourquoi n'est-il pas nécessaire? Habituellement, vous verrez un avertissement dans ce cas. – pixelfreak

+7

si vous créez votre fichier à l'aide d'Interface Builder, n'est pas nécessaire dans le fichier .h – Saurabh

+1

en ajoutant dans le fichier .h et définissez delegate dans viewdidload [yourTextField setDelegate: self]; le complétera! – Umitk

1

délégué ensemble de UITextField, et sur tour, méthode textFieldShouldReturn, dans cette méthode il suffit d'écrire deux lignes suivantes:

[textField resignFirstResponder]; 
return YES; 

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

57

En viewDidLoad déclare:

[yourTextField setDelegate:self];

Ensuite, comprennent la substitution de la méthode délégué :

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

+1 pour le rappel 'setDelegate:'. Certainement oublié et le code ne fonctionnait pas auparavant. – piperchester

+2

Cela ne devrait-il pas s'agir de textField, plutôt que de yourTextField lors de son passage? –

+0

est une façon de dire que déclarer le délégué de votre textField –

1

Essayez ceci ,

[textField setDelegate: self]; 

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

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

ce n'est pas la meilleure pratique pour le faire. – orafaelreis

+0

nécessite UITextFieldDelegate dans la définition de l'interface. –

+0

@AlpAltunel: Merci pour le commentaire, il y a 4 ans. –

11

Dans rapide comme cela:
d'abord dans votre ViewController mettre en œuvre cette UITextFieldDelegate Pour exemple.

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

Maintenant, ajoutez un délégué à un TextField dans lequel vous voulez masquer le clavier lorsque le retour est exploité soit dans la méthode viewDidLoad comme ci-dessous ou si vous initialisant. Par exemple.

override func viewDidLoad() { 

    super.viewDidLoad() 
    myTextField.delegate = self 
} 

Maintenant, ajoutez cette méthode.

func textFieldShouldReturn(textField: UITextField) -> Bool { 

    textField.resignFirstResponder() 
    return true 
} 
+1

Deuxième étape non nécessaire si vous définissez un délégué dans IB. –

8

Essayez ceci dans Swift,

Étape 1: Set délégué comme moi à votre textField

textField.delegate = self 

Étape 2: Ajouter cette UITextFieldDelegate ci-dessous votre déclaration de classe,

extension YourClassName: UITextFieldDelegate { 
    func textFieldShouldReturn(textField: UITextField) -> Bool { 
     textField.resignFirstResponder() 
     return true 
    } 
} 
0
[textField resignFirstResponder]; 

Utilisez cette

1

Vous pouvez connecter « action primaire Déclenché » (clic droit sur UITextField) avec un IBAction et vous pouvez démissionner premier intervenant (sans délégation).Exemple (Swift 4):

@IBAction func textFieldPrimaryAction(_ sender: UITextField) { 
    sender.resignFirstResponder() 
    ... 
} 
+0

Méthode préférée si vous utilisez des storyboards. – lal

Questions connexes