J'utilise UITextfied
en cliquant sur le clavier textfied apparaît mais quand j'ai appuyé sur la returntouche, le clavier ne disparaît pas. J'ai utilisé le code suivant:
func textFieldShouldReturn(textField: UITextField!) -> Bool // called when 'return' key pressed. return NO to ignore.
{
return true;
}
la méthode resignfirstponseer ne fonctionne pas.
ios
swift
uitextfield
Ashwinkumar Mangrulkar
la source
la source
Réponses:
Vous pouvez faire en sorte que l'application ferme le clavier à l'aide de la fonction suivante
Voici un exemple complet pour mieux illustrer cela:
Source de code: http://www.snip2code.com/Snippet/85930/swift-delegate-sample
la source
UITextFieldDelegate
!func textFieldShouldReturn(textField: UITextField) -> Bool {
changer pourfunc textFieldShouldReturn(_ textField: UITextField) -> Bool {
La
return true
partie de ceci indique uniquement au champ de texte s'il est autorisé ou non à revenir.Vous devez dire manuellement au champ de texte de fermer le clavier (ou quel que soit son premier répondeur), et cela se fait avec
resignFirstResponder()
, comme ceci:la source
UITextFieldDelegate
?Ajoutez
UITextFieldDelegate
à la déclaration de classe:Connectez-le
textfield
ou écrivez-le par programmedéfinissez votre contrôleur de vue comme le délégué des champs de texte dans la vue s'est chargé:
Ajoutez la fonction suivante
avec tout cela, votre clavier commencera à disparaître en touchant à l'extérieur du champ de texte ainsi qu'en appuyant sur la touche retour.
la source
UITextFieldDelegate
... merci beaucoup!Swift 4.2 - Aucun délégué nécessaire
Vous pouvez créer une sortie d'action à partir de UITextField pour la « Action principale déclenchée » et résigner le premier répondeur sur le paramètre expéditeur transmis:
Super simple.
(Merci à la vidéo de 60 secondes de Scott Smith de m'avoir informé à ce sujet: https://youtu.be/v6GrnVQy7iA )
la source
Solution Swift 3 simple: Ajoutez cette fonction à vos contrôleurs de vue qui comportent un champ de texte:
Ensuite, ouvrez votre éditeur assistant et assurez-vous que votre Main.storyboard est d'un côté de votre vue et que le fichier de vue controller.swift souhaité est de l'autre. Cliquez sur un champ de texte puis sélectionnez dans le panneau de droite des utilitaires le panneau «Afficher l'inspecteur de connexion». Contrôlez le glissement de la fonction "Did End on Exit" vers la fonction ci-dessus dans votre fichier swift. Répétez pour tout autre champ de texte de cette scène et créez un lien vers la même fonction.
la source
@RSC
pour moi, l'ajout critique dans Xcode version 6.2 (6C86e) est dans
override func viewDidLoad()
J'ai essayé de le faire fonctionner avec la touche de retour pendant des heures jusqu'à ce que je trouve votre message, RSC. Je vous remercie!
De plus, si vous souhaitez masquer le clavier si vous touchez ailleurs sur l'écran:
la source
Pour obtenir la suppression automatique du clavier, j'ai mis ce code dans l'une des méthodes de la classe de mon champ de texte personnalisé:
Remplacez le nom de votre point de vente par
textField
.la source
mytextfield.addTarget(nil, action:Selector(("firstResponderAction:")), for:.editingDidEndOnExit)
(version Swift 5) dansviewDidLoad
mais ni retour ni tapotement quelque part en dehors du champ de texte n'a fonctionné. J'ai obtenu les champs de texte en créant chacun une sortie.viewDidAppear
méthode de cette classe.UIAlertController.addTextField(configurationHandler: {(textField: UITextField!) in textField.delegate = self textField.addTarget(self, action: #selector(MySubclass.textChanged(_:)), for: .editingChanged) })
Cela peut être un peu trop spécifique à mon cas, mais j'espère que cela aide. Essayez d'appeler à l'intérieurviewDidAppear
et de vous conformer aux délégués si nécessaire.Une autre façon de le faire qui utilise principalement le storyboard et vous permet facilement d'avoir plusieurs champs de texte est:
Connectez tous vos champs de texte pour ce contrôleur de vue à cette action sur l'
Did End On Exit
événement de chaque champ.la source
Je suggérerais d'initier la classe de RSC:
}
la source
Lorsque l'utilisateur appuie sur le bouton Terminé du clavier texte, un événement Did End On Exit est généré; à ce moment-là, nous devons dire au champ de texte de renoncer au contrôle pour que le clavier disparaisse. Pour ce faire, nous devons ajouter une méthode d'action à notre classe de contrôleur. Sélectionnez ViewController.swift, ajoutez la méthode d'action suivante:
Sélectionnez Main.storyboard dans le Navigateur du projet et ouvrez l'inspecteur de connexions. Faites glisser le cercle à côté de Did End On Exit jusqu'à l'icône jaune Afficher le contrôleur dans le storyboard et lâchez prise. Un petit menu contextuel apparaîtra contenant le nom d'une seule action, celle que nous venons d'ajouter. Cliquez sur l'action textFieldDoneEditing pour la sélectionner et c'est tout.
la source
Voici la mise à jour Swift 3.0 du commentaire de peacetype:
la source
Je déteste ajouter la même fonction à chaque UIViewController. En étendant UIViewController pour prendre en charge UITextFieldDelegate, vous pouvez fournir un comportement par défaut de "retour pressé".
Lorsque vous créez de nouveaux UIViewController et UITextField, tout ce que vous avez à faire est d'écrire un code de ligne dans votre UIViewController.
Vous pouvez même omettre ce code d'une ligne en accrochant le délégué dans Main.storyboard. (En utilisant "ctrl" et faites glisser de UITextField vers UIViewController)
la source
Swift 3
Ajoutez ce code ci-dessous à votre VC
Travaille pour moi
la source
Assurez-vous que votre délégué textField est défini sur le contrôleur de vue à partir duquel vous écrivez votre code lié au champ de texte.
la source
Rapide
Utilisation de la fonction optionnelle de
UITextFieldDelegate
.false
signifie que ce champ peut être invité à démissionner.true
- forcer la démission.la source
alors vous utilisez cette fonction
la source
vous pouvez le mettre n'importe où mais pas dans un UIButton
alors vous pouvez mettre ce code dans un bouton (également par exemple):
cela a fonctionné pour moi
la source
Dans le contrôleur de vue que vous utilisez:
la source
vous devez connecter l'UITextfied avec un délégué du contrôleur de vue pour rendre cette fonction appelée
la source
Tout en un Masquer le clavier et déplacer la vue sur le clavier ouvert: Swift 5
la source