Question

Est-il possible de faire une resignFirstResponder générale pour masquer le clavier indépendamment de ce que appelle textfield / view / etc il?

La raison est que j'ai beaucoup de textfields sur moi et je ne veux pas avoir à resignFirstResponder pour tous les champs de texte pour masquer le clavier. Je veux juste un général

[self resignFirstResponder].

Toutes les idées?

Merci à l'avance

Était-ce utile?

La solution

La meilleure façon de le faire est d'avoir une méthode pour chaque fois que vous voulez masquer le clavier qui ressemble à ceci:

-(void)dismissKeyboard {
    [firstField becomeFirstResponder];
    [firstField resignFirstResponder];
}

Autres conseils

Je sais que cela a déjà été marqué comme ayant été, mais pour ceux qui se jettent dans ce comme moi, vous pouvez simplement utiliser la méthode suivante sur la vue qui contient les champs de texte.

- (BOOL)endEditing:(BOOL)force
  

Cette méthode ressemble à la vue actuelle et sa hiérarchie de sous-vue pour le champ de texte qui est actuellement le premier intervenant. Si elle trouve un, il demande que champ de texte de démissionner en tant que premier intervenant. Si le paramètre de force est réglée sur OUI, le champ de texte est jamais demandé; il est contraint de démissionner. Documentation UIView

[self.view endEditing:YES];

il cachera clavier lorsque l'on clique sur la vue.

Vous pouvez rejeter le clavier sans référence à UITextField / UITextView avec l'aide de ci-dessous le code:

[[[UIApplication sharedApplication] keyWindow] endEditing:YES];

rejettera le clavier globalement sans référence.

espère que cela vous aidera.

Vous pouvez vérifier ces questions:

En résumé: Vous pouvez appeler becomeFirstResponder sur une autre chose que vous choisissez. Il pourrait être un UIViewController ou un UIView. J'ai eu un problème similaire avant, je devais faire mon clavier loin quand je poussais mon avis contrôleur à son appelant, sans savoir ce qui a été le premier textfield répondeur. Puis, sur viewWillAppear de mon contrôleur de vue que je rentrais en arrière, j'ai appelé [auto becomeFirstResponder] et le clavier de la vue poussée a disparu. Parce que ce fait selon champ texte était lâche le premier répondeur

Dans ma propre application quand j'avais plus d'un champ de texte et voudrais faire le clavier disparaître peu importe lequel des champs appelés, je voudrais juste écrit une méthode et de laisser chacun d'entre eux resignFirstResponder.

Je suppose qu'en tant que programmeur, vous devez avoir les connaissances clairement combien de champs de texte sont sur votre contrôleur de vue et comment vous pouvez y accéder, sinon il va se foiré et vous app ne sera pas l'air bien ... :-P

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top