J'ai cherché partout mais je n'arrive pas à le trouver. Je sais comment supprimer le clavier en utilisant Objective-C
mais je ne sais pas comment faire cela en utilisant Swift
? Est-ce que quelqu'un sait?
ios
swift
uikeyboard
lagune
la source
la source
Réponses:
Voici une autre façon d'effectuer cette tâche si vous comptez utiliser cette fonctionnalité en plusieurs
UIViewControllers
:Maintenant, dans tout
UIViewController
, tout ce que vous avez à faire est d'appeler cette fonction:Cette fonction est incluse en tant que fonction standard dans mon référentiel qui contient de nombreuses extensions Swift utiles comme celle-ci, consultez-la: https://github.com/goktugyil/EZSwiftExtensions
la source
didSelectRowAtIndexPath
.tap.cancelsTouchesInView = false
. Cela l'a résolu pour moi au moins. J'espère que cela aide quelqu'unUne réponse à votre question sur la façon de fermer le clavier dans Xcode 6.1 à l'aide de Swift ci-dessous:
( Source de cette information ).
la source
Swift 4 fonctionne
Créez l'extension comme ci-dessous et appelez
hideKeyboardWhenTappedAround()
dans votre contrôleur de vue de base.La chose la plus importante à appeler dans votre Base View Controller afin que vous n'ayez pas besoin d'appeler tout le temps dans tous les contrôleurs de vue.
la source
Tu peux appeler
sur n'importe quelle instance d'un répondeur UIR, comme un UITextField. Si vous l'appelez dans la vue qui provoque actuellement l'affichage du clavier, le clavier disparaîtra.
la source
la source
pour Swift 3 c'est très simple
si vous voulez masquer le clavier en appuyant sur la touche RETOUR
mais dans le second cas, vous devrez également passer le délégué de tous les textFields au ViewController dans le Main.Storyboard
la source
unrecognized selector sent to instance
avec ce code.Swift 3: moyen le plus simple de supprimer le clavier:
la source
La réponse de Dash est correcte et préférée. Une approche plus "terre brûlée" est d'appeler
view.endEditing(true)
. Cela provoqueview
et toutes ses sous-vuesresignFirstResponder
. Si vous n'avez pas de référence à la vue que vous souhaitez ignorer, il s'agit d'une solution hacky mais efficace.la source
swift 5 deux lignes suffisent. Ajoutez à votre
viewDidLoad
devrait fonctionner.Si votre geste de toucher a bloqué d'autres touches, ajoutez cette ligne:
la source
Dans le storyboard:
la source
Swift 3:
Extension avec
Selector
comme paramètre pour pouvoir faire des choses supplémentaires dans la fonction de rejet etcancelsTouchesInView
pour éviter la distorsion en touchant d'autres éléments de la vue.Usage:
la source
Utilisez IQKeyboardmanager qui vous aidera à résoudre facilement .....
///////////////////////////////////////////
! [comment désactiver le clavier ..] [1]
la source
J'ai trouvé que la meilleure solution comprenait la réponse acceptée de @Esqarrouth, avec quelques ajustements:
La ligne
tap.cancelsTouchesInView = false
était critique: elle garantit que leUITapGestureRecognizer
n'empêche pas d'autres éléments de la vue de recevoir l'interaction de l'utilisateur.La méthode a
dismissKeyboard()
été changée en légèrement moins élégantedismissKeyboardView()
. C'est parce que dans la base de code assez ancienne de mon projet, il y avait de nombreuses fois où ildismissKeyboard()
était déjà utilisé (j'imagine que ce n'est pas rare), provoquant des problèmes de compilation.Ensuite, comme ci-dessus, ce comportement peut être activé dans des contrôleurs de vue individuels:
la source
Si vous utilisez une vue de défilement, cela pourrait être beaucoup plus simple.
Sélectionnez simplement
Dismiss interactively
dans le storyboard.la source
Dans Swift 4, ajoutez @objc:
Dans le viewDidLoad:
Une fonction:
la source
Ajoutez cette extension à votre ViewController:
la source
Pour développer la réponse d'Esqarrouth , j'utilise toujours ce qui suit pour rejeter le clavier, surtout si la classe dont je supprime le clavier n'a pas de
view
propriété et / ou n'est pas une sous-classe deUIView
.Et, pour plus de commodité, l'extension suivante de la
UIApplcation
classe:la source
la source
En tant que programmeur débutant, cela peut être déroutant lorsque les gens produisent des réponses plus compétentes et inutiles ... Vous n'avez pas à faire les choses compliquées ci-dessus! ...
Voici l'option la plus simple ... Dans le cas où votre clavier apparaît en réponse au champ de texte - Dans votre fonction d'écran tactile, ajoutez simplement la fonction resignFirstResponder . Comme illustré ci-dessous - le clavier se fermera car le premier répondeur est libéré (en quittant la chaîne de répondeur) ...
la source
J'ai utilisé IQKeyBoardManagerSwift pour le clavier. C'est facile a utiliser. il suffit d'ajouter le pod 'IQKeyboardManagerSwift'
Importez IQKeyboardManagerSwift et écrivez le code
didFinishLaunchingWithOptions
dansAppDelegate
.la source
Cette doublure démissionne du clavier de tout (n'importe quel) UITextField dans une UIView
la source
Une seule ligne de code dans la
viewDidLoad()
méthode:la source
En rapide vous pouvez utiliser
la source
Pour Swift3
Enregistrer un identificateur d'événement dans viewDidLoad
nous devons ensuite ajouter le geste dans la vue dans le même viewDidLoad.
Ensuite, nous devons initialiser la méthode enregistrée
la source
Publication en tant que nouvelle réponse depuis que ma modification de la réponse de @ King-Wizard a été rejetée.
Faites de votre classe un délégué de UITextField et remplacez touchesBegan.
Swift 4
la source
Vous pouvez également ajouter un outil de reconnaissance des mouvements tactiles pour démissionner du clavier. :RÉ
la source
Une autre possibilité consiste à simplement ajouter un gros bouton sans contenu se trouvant sous toutes les vues que vous pourriez avoir besoin de toucher. Donnez-lui une action nommée:
Le problème avec un identificateur de geste était pour moi, qu'il a également attrapé toutes les touches que je voulais recevoir par la tableViewCells.
la source
Si vous avez d'autres vues qui devraient également être touchées, vous devez définir
cancelsTouchesInView = false
Comme ça:
la source
Essayez ça, ça marche
la source
Lorsqu'il y a plusieurs champs de texte dans la vue
Pour suivre la recommandation de @ modocache d'éviter d'appeler
view.endEditing()
, vous pouvez garder une trace du champ de texte qui est devenu premier répondeur, mais qui est désordonné et sujet aux erreurs.Une alternative consiste à appeler
resignFirstResponder()
tous les champs de texte dans le viewcontroller . Voici un exemple de création d'une collection de tous les champs de texte (qui dans mon cas était de toute façon nécessaire pour le code de validation):Avec la collection disponible, il est simple d'itérer à travers chacun d'eux:
Alors maintenant, vous pouvez appeler
dismissKeyboard()
votre reconnaissance de gestes (ou là où cela vous convient). L'inconvénient est que vous devez conserver la liste desUITextField
s lorsque vous ajoutez ou supprimez des champs.Commentaires bienvenus. S'il y a un problème avec l'appel
resignFirstResponder()
de contrôles qui ne sont pas les premiers intervenants, ou s'il existe un moyen simple et garanti sans bug de suivre le premier répondant actuel, j'aimerais en entendre parler!la source