13

ho aggiunto questo codice in cellForRowAtIndexPathCome aggiungere i gesti di scorrimento alla cella UITableView?

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

funziona benissimo. Ma voglio UISwipeGestureRecognizerDirectionLeft quindi aggiunta come questo

[gestureR setDirection:UISwipeGestureRecognizerDirectionLeft|UISwipeGestureRecognizerDirectionRight)]; 

Quando controllo con la direzione e lo stato sono sempre ottenendo 3 = 3

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

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

se applico solo gesto funziona benissimo. Ho provato ad aggiungere due gesti uno per uno. ma risponderà per un solo gesto.

Come aggiungere secondi gesti. Ho aggiunto direttamente a un gesto a TableView un altro a cella, ma ora uso.

risposta

23

Prova questa

 
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]; 

Se si desidera gestire diverse funzionalità su fendenti a destra ea sinistra, basta cambiare i selettori.

+0

Grazie, già provato come sopra ma non con funzioni diverse (selettore) .. Cerco di farti sapere ... +1 –

5

So che è passato da quando hai chiesto questo. Ma prova a leggere di nuovo la riga successiva nella tua domanda. [gestureR setDirection:UISwipeGestureRecognizerDirectionRight|UISwipeGestureRecognizerDirectionRight)];

Ti sei accorto che hai aggiunto UISwipeGestureRecognizerDirectionRight. Due volte!!

: D

+0

Sì .. Ottima cattura .. Questo è solo un problema di digitazione .. Ho aggiornato di nuovo la Q .. –

+0

Grazie. Per il record giusto '[gestureR setDirection: UISwipeGestureRecognizerDirectionLeft | UISwipeGestureRecognizerDirectionRight)];' Funziona alla grande. Provato e testato su Xcode 4.6.2 – holierthanthou84

7

Invece di due volte alloc, sarebbe meglio se si utilizza

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

E ottenere la direzione del colpo nell'azione come:

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