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