2010-08-11 9 views
8

Possible en double:
MonoTouch.Dialog: Dismissing keyboard by touching anywhere in DialogViewControllerPuis-je supprimer le clavier de l'iPhone en touchant l'arrière-plan de DialogViewController (MonoTouch.Dialog)?

J'utilise DialogViewController de MonoTouch.Dialogs. J'aimerais pouvoir fermer le clavier en cliquant sur l'arrière-plan de la boîte de dialogue.

J'utilise habituellement la technique consistant à remplir la vue avec un gros bouton personnalisé et à le placer derrière tous les autres éléments. Cependant, je ne peux pas faire ce travail dans le DialogViewController. Je l'ai fait dans LoadView et il a juste gelé tous les autres contrôles.

Existe-t-il un moyen relativement simple de réaliser ce que je veux?

Répondre

7

Dans contrôleur de vue:

public override void TouchesBegan (NSSet touches, UIEvent evt) 
    { 
     base.TouchesBegan (touches, evt); 

     myField.ResignFirstResponder(); 
    } 

Edit: D'après ce que j'ai lu, vous pouvez utiliser l'événement touchesBegan pour la sous-vue cellulaire au lieu de la table elle-même. Je ne suis pas positif qui fonctionne. Bonne chance :)

+0

+1 pour réellement avoir dans .net :) –

+1

+1 comme il est une approche propre au problème plus général. Cependant, cela ne résout pas mon problème avec MonoTouch.Dialog. Ceci est descendu de UITableViewController, qui ne semble pas recevoir l'événement TouchesBegan. – dommer

+0

-1 Ne fonctionne pas pour MonoTouch.Dialog qui est ce que la question d'origine demandait. – CDeutsch

1

miguel.de.icaza a répondu à cette question sur un autre sujet de discussion: https://stackoverflow.com/a/10864640/1134836.

Sa solution:

var tap = new UITapGestureRecognizer(); 
    tap.AddTarget (() =>{ 
     dvc.View.EndEditing (true); 
    }); 
    dvc.View.AddGestureRecognizer (tap); 
+0

Vous pourriez nous aider en signalant la question comme un doublon, au lieu d'afficher une réponse en double à une question en double. –

+0

Je n'ai jamais fait ça auparavant. Je suppose que c'est juste le lien du drapeau sous la question? – valdetero

+0

Oui. Utilisez l'option "Autre" dans la boîte de dialogue de marquage. –