2010-09-16 5 views
0

Mon contrôleur de vue possède l'objet UITextField en tant que sous-vue. Le contrôleur est défini comme cible pour gérer l'événement UIControlEventTouchUpOutside du champ de texte. J'essaie d'utiliser ce gestionnaire d'événements pour fermer le clavier lorsque le champ de texte devient le premier répondeur, mais il semble ne jamais être appelé. Les méthodes de délégation comme textFieldShouldReturn fonctionnent très bien. Pourquoi l'objet de champ de texte n'envoie pas de message d'action à la cible?Est-ce que UITextField consomme des événements tactiles?

Pourquoi l'objet de champ de texte n'envoie pas de message d'action à la cible? J'ai essayé ce schéma pour un tas de tous les événements tactiles, mais pas de chance .. Ou dois-je sous-classer UITextField en quelque sorte pour être en mesure d'attraper cet événement?

Merci d'avance!

Répondre

0

UITextField pour sûr à ceux qui répond événement pour gérer le positionnement du curseur et ainsi de suite. Il ne peut pas "transmettre" ces événements à son parent. Si vous avez besoin d'intercepter ceux-ci, vous pouvez sous-classer UITextEvent et attraper ces événements vous-même (bien sûr, n'oubliez pas d'appeler [superblablabla] pour conserver le comportement standard.)

0

Peut-être Il ne répond tout simplement pas l'événement UIControlEventTouchUpOutside. Je suis sûr qu'il répondra à l'événement UIControlEventValueChanged. Je pense que vous pouvez mettre une UIButtom personnalisée transparente comme vue d'arrière-plan, et si vous avez un touchInSideUp dans l'UIButtom, vous pouvez ignorer le clavier comme vous le souhaitez.

-1

Il répond aux mêmes événements que UIButton. Jetez un oeil à IB. Aussi, vous pouvez envisager d'utiliser la méthode UITextFieldDelegate

- (BOOL) textFieldShouldBeginEditing:(UITextField *)textField 
+0

Ne répond pas à UIControlEventTouchUpInside – meteors

Questions connexes