Подтвердить что ты не робот

Как добавить Swipe Gestures в ячейку UITableView?

Я добавил этот код в 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);
}

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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
     }
}

Ответ 3

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

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

: D