Voici quelques exemples de code d'un de mes jeux opengles avec prise en charge des gestes. (Ne pas planter et espère que cela aide)
- (void)viewDidLoad {
[super viewDidLoad];
CGRect rect = [[UIScreen mainScreen] bounds];
rect.size.height = 320;
rect.size.width = 480;
rect.origin.x = 0;
rect.origin.y = 0;
glView = [[EAGLView alloc] initWithFrame:rect pixelFormat:GL_RGB565_OES depthFormat:GL_DEPTH_COMPONENT16_OES preserveBackbuffer:NO];
[self.view addSubview: glView];
[glView addSubview: minimapView];
if(!shell->InitApplication())
printf("InitApplication error\n");
[NSTimer scheduledTimerWithTimeInterval:(1.0/kFPS) target:self selector:@selector(update) userInfo:nil repeats:YES];
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(Panned:)];
[glView addGestureRecognizer:[pan autorelease]];
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(Tapped:)];
[glView addGestureRecognizer:[tap autorelease]];
UITapGestureRecognizer *dbltap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(DoubleTapped:)];
[dbltap setNumberOfTapsRequired:2];
[glView addGestureRecognizer:[dbltap autorelease]];
UILongPressGestureRecognizer *longpress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(LongPressed:)];
[glView addGestureRecognizer:[longpress autorelease]];
}
Et la fonction sélecteur
- (void) LongPressed:(UILongPressGestureRecognizer*)sender{
NSLog(@"Long Pressed");
}
Je n'ai pas eu une expérience directe avec cela, mais avez-vous essayé d'ajouter à la vue parent (comme la fenêtre par exemple) à la place? Vous ne savez pas pourquoi, mais cela pourrait nécessiter des fonctionnalités de couche qui ne sont pas implémentées dans la classe CAEAGLLayer. – jhabbott
Ceci est très étrange, car OpenGL ES héberge des vues répondant aux événements tactiles normaux sans incident. Pourquoi un détecteur de mouvement se comporte-t-il différemment? –
J'ai utilisé des reconnaisseurs de gestes pour les UIViews de base et les EAGLViews et ils fonctionnent exactement de la même manière. Vous avez probablement un problème ailleurs. Que dit votre journal de bord? –