2010-10-05 6 views
1

J'essaie de faire en sorte que mon application iPad reflète l'écran de l'application sur un écran secondaire via un câble VGA. En raison de problèmes de performances, je souhaite uniquement que mes vues s'affichent sur l'écran secondaire, mais capturent toujours les événements tactiles via l'écran de l'iPad.Passage des événements tactiles à la vue de UIViewController

Ma méthode actuelle est de deux UIWindows: une pour l'écran connecté VGA qui affiche toutes les vues, animations etc. et une autre UIWindow pour l'écran de l'iPad qui capture les événements tactiles. Cela fonctionne très bien en termes de performances et je peux enregistrer les événements tactiles reçus sur l'écran de l'iPad.

Mais pour une raison quelconque, je ne peux pas passer les méthodes touchesBegan:, touchesEnded: etc à mon UIViewControllers et de les faire réagir correctement. Si je l'envoie directement à la UIViewController je peux les capturer en remplaçant les événements tactiles sur le UIViewController mais ce n'est utile que pour capturer des touches en arrière-plan, pas pour les boutons, etc. qui sont ajoutés au UIViewController.

Puis j'ai essayé d'envoyer les événements tactiles à viewController.view et ils disparaissent ailleurs. J'ai même essayé de faire défiler chaque sous-vue dans le contrôleur de vue et toujours aucun dé.

Il me manque quelque chose de simple, des idées?

Répondre

2

J'ai aussi eu ce problème. Votre problème peut être résolu très simplement. Vous pouvez remplacer simplement la méthode hitTest, comme le UIView ceci:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent*)event 
{ 
    return [[[[UIApplication sharedApplication] delegate] secondWindow] hitTest:point withEvent:event]; 
} 

et vous pouvez passer l'événement touche à l'autre point de vue. Mon problème est plus difficile que le vôtre. Je veux "copier" l'événement, pas seulement le "passer". Est-ce que quelqu'un sait comment faire ça?

Questions connexes