2010-06-05 4 views
1

Edit: Ok, c'est bizarre ... Après avoir fait beaucoup de débogage, j'ai découvert que pendant que les champs de texte se désactivaient, le statut du premier répondeur (je vois qu'il n'y a plus de barre clignotante), le clavier n'est PAS DESCENTE! Peut-être que cela mérite une question différente.Comment puis-je rejeter le clavier dans iPhone OS 3.2 avec champ de texte dans popover?

J'ai plusieurs champs de texte dans une sous-classe de uiviewcontroller personnalisée, qui est affichée dans un popover. Le popover est affiché sous la forme d'un bouton. Je veux que le clavier descende quand le Popover est rejeté (soit par l'utilisateur en appuyant de nouveau sur le bouton de la barre, soit en tapant à l'extérieur du popover.) Depuis le contrôleur de vue qui affiche le popover, quand le popover est fermé. , j'appelle

[optionsController dismissFirstResponder]; 

Optionscontroller est la sous-classe UIViewController dans la popover Dismissfirstresponder est une méthode que je défini:..

-(void)dsimissFirstResponder { 
[nameField resignFirstResponder]; 
[descriptionField resignFirstResponder]; 
[helpField resignFirstResponder]; 

} 

Ce sont trois IBOutlets que je connecté dans le xib aux champs de texte

Ça ne marche pas. Toute l'aide pouvant etre apportée serait très appréciée. Le code est appelé en tant que tel: [optionsController dismissFirstResponder]; [poppoverController dismissPopoverAnimated];

J'ai défini un point d'arrêt dans dismissFirstResponder et il est appelé lorsque je m'y attendais. J'ai également vérifié, et les trois IBOutlets sont non-nul pendant cet appel de fonction. Ce sont les seuls champs de texte dans l'ensemble de l'application, donc je ne suis pas sûr de savoir comment mettre le clavier en place.

+0

Est-ce que votre code est appelé? Il y a un type dans "dsimissFirstResponder". L'appelez-vous avant que le popover ne se ferme? – Eiko

+0

Je viens de définir un point d'arrêt à [nom de point ... Et il est effectivement appelé quand il devrait être. Question éditée. –

Répondre

0

Ce dont vous avez besoin est de recevoir les rappels de méthode de délégué pour un popover. Avez-vous regardé les documents pour le UIPopoverControllerDelegate? Les méthodes suivantes sont définies:

  • -popoverControllerShouldDismissPopover:
  • -popoverControllerDidDismissPopover:

Ceux-ci devraient s'appeler lorsque votre utilisateur fait aucun geste de rejeter le popover (appuyer en dehors, etc.) en supposant avez mis un délégué pour votre popover et vous avez mis en place ce protocole formel dans ce délégué. Quand - popoverControllerDidDismissPopover: est appelé, vous pouvez simplement appeler -resignFirstResponder sur vos contrôles à ce moment-là.

// In your popover delegate 
- (void)popoverControllerDidDismissPopover: 
        (UIPopoverController *)popoverController 
{ 
    [nameField resignFirstResponder]; 
    [descriptionField resignFirstResponder]; 
    [helpField resignFirstResponder]; 
} 
+0

Ahhh ... J'ai oublié que vous pouvez assigner un délégué comme n'importe quel objet ... Je vais assigner la sous-classe de contrôleur de vue qui est montrée à l'intérieur du popover en tant que délégué du popover, et faites comme vous dites quand je reviens à mon projet, et voir si cela fonctionne. –

+0

Cela n'a pas fonctionné, malheureusement. Voir ma modification ci-dessus. –

+0

alors avez-vous déjà trouvé une réponse? J'ai le même problème :/ –

Questions connexes