2015-07-19 2 views
0

J'ai une application qui utilise un GLKView, sans autre élément d'interface utilisateur. Je n'utilise pas de GLKViewController et je ne prévois pas de le faire.Reconnaissance gestuelle GLKView sans GLKViewController

Toute ma configuration de l'application se produit dans didFinishLaunchingWithOptions

Mon interface AppDelegate est définie comme:

@interface AppDelegate : UIResponder <UIApplicationDelegate, GLKViewDelegate, UIGestureRecognizerDelegate> 

Dans le cadre de cette configuration, je suis en train de mettre en place (Tap GestureRecognizer, Pinch, etc.) - cependant ils ne semblent pas tirer.

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapFrom:)]; 
tapGesture.delegate = self; 
tapGesture.numberOfTapsRequired = 1; 
tapGesture.numberOfTouchesRequired = 1; 
tapGesture.cancelsTouchesInView = NO; 
[view addGestureRecognizer:tapGesture]; 
tapGesture.delegate = self; 

Mon sélecteur est défini comme:

#pragma mark - GLKViewDelegate 

- (void) handleTapFrom: (UITapGestureRecognizer *)recognizer 
{ 
    // Code to respond to gesture here 
    NSLog (@"tapGestureUpdated()"); 
} 

De tout le code exemple que je peux trouver, geste reconnaisseurs sont généralement l'installation dans la méthode viewDidLoad. Cependant, il semble que le GLKView ne fournit pas cette méthode - quand je tente d'en fournir un, il n'est pas appelé.

Vraisemblablement, c'est quelque chose que le GLKViewController fournit - mais comme mentionné, je n'utilise pas un GLKViewController.

Notez que je suis capable de remplacer la méthode touchesBegan (et les amis), et que ces sélecteurs sont déclenchés comme prévu.

Une idée de ce que je fais mal, ou s'il y a une solution de contournement?

Répondre

0

Donc, j'ai réussi à faire fonctionner cela.

Au début des didFinishLaunchingWithOptions créer un UIViewController très simple, le long des lignes de:

static UIViewController *viewController; 
viewController = [[UIViewController alloc] init]; 

[self.window setRootViewController:viewController]; 

Je puis ajouter le geste au contrôleur de vue, plutôt que la vue. Cela semble suspect, puisque je n'ai pas défini ce que devrait être la vue du contrôleur de vue. Mais il semble que le contrôleur de vue recevra avec joie ces événements et tirera sur ces événements.