13

dodałem ten kod w cellForRowAtIndexPathJak dodać gesty przesuwania do komórki UITableView?

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

to działa dobrze. Ale chcę UISwipeGestureRecognizerDirectionLeft więc Dodane jak ten

[gestureR setDirection:UISwipeGestureRecognizerDirectionLeft|UISwipeGestureRecognizerDirectionRight)]; 

Kiedy skontaktować się z kierownictwem i stanie zawsze jestem coraz 3 = 3

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

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

gdybym zastosować tylko jeden gest to działa dobrze. Próbowałem dodać dwa gesty jeden po drugim. ale zareaguje tylko na jeden gest.

Jak dodać drugie gesty. Dodałem bezpośrednio do jednego gestu w TableView Wyświetl jeden do komórki, ale teraz użyj.

Odpowiedz

23

Spróbuj

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

Jeśli chcesz obsługiwać różne funkcje, z lewej i prawej kiepskie piwo, wystarczy zmienić selektorów.

+0

Dzięki, już wypróbowany jak powyżej, ale nie z inną funkcją (selektor) .. Próbuję i dam znać ... +1 –

5

Wiem, że minęły lata, odkąd o to poprosiłeś. Ale spróbuj ponownie przeczytać poniższy wiersz w swoim pytaniu. [gestureR setDirection:UISwipeGestureRecognizerDirectionRight|UISwipeGestureRecognizerDirectionRight)];

Czy zdałeś sobie sprawę, że dodano UISwipeGestureRecognizerDirectionRight. Dwa razy!!

: D

+0

Tak .. Świetny haczyk .. Mój to jest po prostu wpisywanie problemu .. Zaktualizowałem ponownie Q .. –

+0

Dzięki. Dla just record '[gestR setDirection: UISwipeGestureRecognizerDirectionLeft | UISwipeGestureRecognizerDirectionRight)];' Działa wspaniale. Wypróbowany i przetestowany na Xcode 4.6.2 – holierthanthou84

7

Zamiast dwa razy Alloc, byłoby lepiej, gdyby użyć

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

i uzyskać kierunek machnięcia w akcji jak:

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