2010-07-13 11 views
2

Cette question fait suite à une des options suivantes:vues modales et touchesBegan

UITouch - Event not responding

je fait plus de recherches et je sais quel est le problème, mais je ne sais pas comment le résoudre ou même si cela peut être résolu. Je dois peut-être adopter une nouvelle approche.

J'ai un RootViewController et de ce que je charge un deuxième ViewController en utilisant le code suivant:

[self presentModalViewController:newWorkoutViewController animated:YES]; 

J'ai alors le code suivant en place NewWorkoutViewController:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    NSLog(@"New Workout Screen tapped"); 
} 

Cette méthode est En cours d'action, je pense que c'est parce que c'est une vue modale. Est-il de toute façon de détecter les robinets sur l'écran dans une vue modale.

Merci Stephen

Répondre

2

Définir les méthodes pertinentes sur votre contrôleur de vue, et non sur votre point de vue.

+0

Ils sont définis sur mon View Controller. – Stephen

+0

Problème résolu ... dans NewWorkoutViewController J'ai deux autres boutons qui peuvent appeler deux autres contrôleurs de vue. Je n'avais pas cette configuration correctement, donc quand l'écran a été cliqué/tapé il ne s'enregistrait pas. Merci pour l'aide. – Stephen

+0

Je veux dire vue, pas voir le contrôleur, bien sûr ... –

1

Vos hypothèses sont incorrectes. L'affichage modal du contrôleur de vue n'a rien à voir avec cela. Les touches fonctionnent de la même manière dans une vue modale que dans n'importe quelle autre. Selon toute vraisemblance, vous n'avez pas activé l'interaction de l'utilisateur sur votre vue. Comment avez-vous créé votre contrôleur de vue secondaire?

+0

les interactions utilisateur sont activées. Pour créer le contrôleur de vue secondaire j'ai cliqué droit sur mon dossier de classes et ajouté un nouveau fichier, puis en sélectionnant UIViewController Sous-classe, Avec XIB pour l'interface utilisateur cochée. – Stephen

+0

Problème résolu ... dans NewWorkoutViewController J'ai deux autres boutons qui peuvent appeler deux autres contrôleurs de vue. Je n'avais pas cette configuration correctement, donc quand l'écran a été cliqué/tapé il ne s'enregistrait pas. Merci pour l'aide. – Stephen

+1

@Stephen: J'ai le même problème en ce moment, où je veux rejeter une vue modale lorsque l'utilisateur tape à l'extérieur de celui-ci (c'est une vue de style «forme» de sorte qu'il ne couvre que le centre de l'iPad) - exactement était le problème avec vos boutons? – Kalle

1

Les événements sont uniquement envoyés à ViewController s'il n'y a aucun contrôle dans la vue pour recevoir les événements. Par exemple, si vous avez un bouton dans votre vue et que vous appuyez sur le bouton, le bouton obtient l'événement tactile, pas le ViewController. Le système d'exploitation détermine où envoyer les événements en utilisant la méthode pointInside: withEvent: puis en appelant hitTest:withEvent: Il est possible de les remplacer dans votre vue et de voir quels objets reçoivent les événements.

En outre, des vues qui sont cachées, qui ont une interaction utilisateur désactivé, ou qui ont un niveau d'alpha inférieur à 0,1 sont ignorés par hitTest: withEvent:

+0

Merci pour ce je comprends ce que vous dites, si vous avez un moment pourrait vous jeter un oeil à cet exemple de code ... http: //www.mediafire.com/ wmjc2ffntzc En fin de compte, je veux y parvenir, sur la base ce que vous avez dit ci-dessus, je ne comprends pas comment ce type a atteint l'événement tactile sur la zone de texte, c'est-à-dire quand la zone de texte est cliquée, les popups Picker. – Stephen