13

que añade este código en cellForRowAtIndexPathCómo agregar gestos deslizar a la celda UITableView?

UISwipeGestureRecognizer *gestureR = [[UISwipeGestureRecognizer alloc] 
              initWithTarget:self action:@selector(handleSwipeFrom:)]; 
     [gestureR setDirection:UISwipeGestureRecognizerDirectionRight];//|UISwipeGestureRecognizerDirectionRight)]; 
     [cell addGestureRecognizer:gestureR]; 

funciona bien. Pero quiero UISwipeGestureRecognizerDirectionLeft añadido así como esto

[gestureR setDirection:UISwipeGestureRecognizerDirectionLeft|UISwipeGestureRecognizerDirectionRight)]; 

Cuando compruebo con la dirección y el estado Siempre estoy recibiendo 3 = 3

- (void)handleSwipeFrom:(UISwipeGestureRecognizer *)recognizer {  

    NSLog(@"%d = %d",recognizer.direction,recognizer.state); 
} 

si aplico un único gesto que trabaja muy bien. Traté de agregar dos gestos uno por uno. pero responderá por un solo gesto.

Cómo agregar segundos gestos. Añadí directamente a un gesto a TableView otro a la celda pero ahora uso.

Respuesta

23

probar este

 
UISwipeGestureRecognizer* gestureR; 
gestureR = [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom)] autorelease]; 
gestureR.direction = UISwipeGestureRecognizerDirectionLeft; 
[view addGestureRecognizer:gestureR]; 

gestureR = [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom)] autorelease]; 
gestureR.direction = UISwipeGestureRecognizerDirectionRight; // default 
[view addGestureRecognizer:gestureR]; 

Si desea gestionar las diferentes funcionalidades en golpes de izquierda y derecha, basta con cambiar los selectores.

+0

Gracias, ya lo intenté así pero no con una función diferente (selector) .. Intento que sepas ... +1 –

5

Sé que ha pasado años desde que lo solicitó. Pero intenta leer la siguiente línea nuevamente en tu pregunta. [gestureR setDirection:UISwipeGestureRecognizerDirectionRight|UISwipeGestureRecognizerDirectionRight)];

¿Sabía que ha añadido UISwipeGestureRecognizerDirectionRight. ¡¡Dos veces!!

: D

+0

Sí ... Gran captura ... Mi esto solo es un problema de tipeo ... Actualicé la Q de nuevo ... –

+0

Gracias. Para el registro justo '[gestureR setDirection: UISwipeGestureRecognizerDirectionLeft | UISwipeGestureRecognizerDirectionRight)];' Funciona muy bien. Probado y probado en Xcode 4.6.2 – holierthanthou84

7

En lugar de dos veces alloc, sería mejor si se utiliza

UISwipeGestureRecognizer* recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipe:)]; 
[recognizer setDirection:UISwipeGestureRecognizerDirectionLeft+UISwipeGestureRecognizerDirectionRight]; 
[cell addGestureRecognizer:recognizer]; 

Y obtener la dirección del golpe en la acción como:

-(void)handleSwipe:(UISwipeGestureRecognizer *) sender 
{ 
    if (sender.direction == UISwipeGestureRecognizerDirectionLeft) 
    { 
    //do something 
    } 
    else //if (sender.direction == UISwipeGestureRecognizerDirectionRight) 
    { 
    //do something 
    } 
} 
Cuestiones relacionadas