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
}