tapgesture recognizer ios xcode cocos2d-iphone uitapgesturerecognizer uipangesturerecognizer

ios - tapgesture recognizer swift



UIPanGestureRecognizer y UITapGestureRecognizer al mismo tiempo (2)

Es posible que deba configurar una cadena de reconocimiento de gestos mediante requireGestureRecognizerToFail. Esto significará que un gesto que se está ejecutando será forzado a fallar, dando prioridad al segundo gesto.

Así que creo que quieres tener tu [requireGestureToFail:].

Aquí está mi pequeña situación. Estoy moviendo un ccsprite con uipanGesture. Puedo moverlo todo sin problemas, y tengo un lugar en la pantalla que puedo disparar usando uitapgesture.

-(void)handleTap:(UITapGestureRecognizer *)recognizer{ CGPoint location = [recognizer locationInView:recognizer.view]; location = [[CCDirector sharedDirector]convertToGL:location]; location = [self convertToNodeSpace:location]; if (location.x > winSize.width * .6 && location.y <winSize.height/2) { NSLog(@"fire"); }

Agregué el método de delegado para que cuando esté haciendo un paneo, pueda hacer clic en el botón de disparo: todo funciona bien.

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{ return YES; }

Pero cuando no estoy activando y solo disparo con la uitapgestura, no puedo moverme cuando estoy disparando ... La razón por la que creo que está sucediendo es porque está registrando el último toque como recognizer.state == UIGestureRecognizerStateBegan porque estoy sin panoramización

Alguien sabe cómo puedo tocar y no registrar el tap como if (recognizer.state == UIGestureRecognizerStateBegan

Intenté si (location.x < winSize.width/2) pero no funcionó.


No sé si alguien está interesado en esta publicación, pero solucioné el problema como el 90% con la siguiente

for(int i=0; i<[recognizer numberOfTouches]; i++){ CGPoint pt = [recognizer locationOfTouch:i inView:recognizer.view]; pt = [[CCDirector sharedDirector]convertToGL:pt]; pt = [self convertToNodeSpace:pt]; if (i==0) { //stuff }