13

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

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 еще один к ячейке, но теперь использую.

ответ

23

Попробуйте

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

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

+0

Спасибо, уже пробовал, как это выше, но не с другой функцией (селектор) .. Я пытаюсь и дам вам знать ... +1 –

5

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

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

: D

+0

Да .. Отличный улов .. Мое это просто набрав проблему .. Я снова обновил Q. –

+0

Спасибо. Для простой записи '[gestureR setDirection: UISwipeGestureRecognizerDirectionLeft | UISwipeGestureRecognizerDirectionRight)];' Отлично работает. Пробовал и тестировал на Xcode 4.6.2 – holierthanthou84

7

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

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 
    } 
} 
Смежные вопросы