Как добавить жесты смахивания в ячейку UITableView? - PullRequest
13 голосов
/ 19 декабря 2011

Я добавил этот код в cellForRowAtIndexPath

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

, он отлично работает.Но я хочу UISwipeGestureRecognizerDirectionLeft так добавлено вот так

[gestureR setDirection:UISwipeGestureRecognizerDirectionLeft|UISwipeGestureRecognizerDirectionRight)];

Когда я проверяю направление и состояние, я всегда получаю 3 = 3

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

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

, если я применяю только один жест, это работаетхорошо.Я попытался добавить два жеста один за другим.но он отвечает только за один жест.

Как добавить вторые жесты.Я добавил непосредственно к одному жесту в TableView другой к ячейке, но теперь использую.

Ответы [ 3 ]

23 голосов
/ 19 декабря 2011

Попробуйте это

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

Если вы хотите обрабатывать различные функции при левом и правом пролистывании, просто измените селекторы.

7 голосов
/ 30 ноября 2013

Вместо двухкратного выделения было бы лучше, если вы используете

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

И получите направление удара в действии как:

-(void)handleSwipe:(UISwipeGestureRecognizer *) sender 
{
    if (sender.direction == UISwipeGestureRecognizerDirectionLeft) 
    {
    //do something
    }
    else //if (sender.direction == UISwipeGestureRecognizerDirectionRight) 
    {
  //do something
     }
}
5 голосов
/ 09 мая 2013

Я знаю, что прошло много времени с тех пор, как ты спросил это.Но попробуйте снова прочитать следующую строку в вашем вопросе.[gestureR setDirection:UISwipeGestureRecognizerDirectionRight|UISwipeGestureRecognizerDirectionRight)];

Вы поняли, что добавили UISwipeGestureRecognizerDirectionRight.Дважды!!

: D

...