2010-12-04 8 views
3

J'ai créé une vue avec un UIPickerView qui s'affiche lorsque l'utilisateur appuie sur un bouton.Interception d'un événement de prise dans une condition donnée

Maintenant, j'ai besoin de faire disparaître UIPickerView lorsque l'utilisateur touche n'importe où sur l'écran (évidemment hors de UiPickerView). Comment puis-je intercepter ce tap uniquement lorsque UIPickerView est visible? Merci!

+0

Vous n'avez pas besoin du '[ios iphone]' au début du titre de votre question. C'est ce que les tags sont pour. ;) – esqew

+0

Merci esqew. Je change le titre. – MatterGoal

Répondre

2

Vous pouvez associer un UIGestureRecognizer à la vue principale. Dès que quelqu'un appuie sur la vue principale quelque part, vous pouvez obtenir un événement et supprimer votre UIPickerView. Ecrire quelque chose comme ça en vous ViewController:

UITapGestureRecognizer *tgr = [[UITapGestureRecognizer alloc] 
         initWithTarget:self action:@selector(viewWasTapped)]; 
[self.view addGestureRecognizer:tgr]; 

En vous viewWasTapped méthode vous recevrez tous les robinets sur la vue ViewControllers.

Espérons que cela aide.

+0

Il est résolu seulement en partie ... je suis en mesure d'ajouter un système de reconnaissance sur une vue. Mon problème est que j'ai besoin de basculer le système de reconnaissance. Si la vue uipicker est visible, je l'ajoute ... quand elle est supprimée, je supprime aussi le système de reconnaissance. J'aimerais savoir si c'est une bonne méthode ou non. – MatterGoal

+0

Notez que le module de reconnaissance doit être placé sur la vue _main_; c'est-à-dire la vue qui englobe tout votre écran. –