如何将Swipe Gestures添加到UITableView单元格?

Nag*_*h M 13 iphone objective-c ios5 uiswipegesturerecognizer swipe-gesture

我添加了这段代码 cellForRowAtIndexPath

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

它工作正常.但我想要UISwipeGestureRecognizerDirectionLeft这样添加

[gestureR setDirection:UISwipeGestureRecognizerDirectionLeft|UISwipeGestureRecognizerDirectionRight)];
Run Code Online (Sandbox Code Playgroud)

当我检查方向和状态时,我总是得到3 = 3

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

    NSLog(@"%d = %d",recognizer.direction,recognizer.state);
}
Run Code Online (Sandbox Code Playgroud)

如果我只申请一个手势,它可以正常工作.我试着逐个添加两个手势.但它只会响应一个手势.

如何添加第二个手势.我直接添加到一个手势到TableView另一个到单元格,但现在使用.

Neo*_*Neo 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];

如果要在左右滑动中处理不同的功能,只需更改选择器即可.


Ash*_*hok 7

如果你使用它会更好,而不是两次alloc

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

并在动作中获取滑动方向:

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


hol*_*u84 5

我知道你问这个问题已经很久了.但请在您的问题中再次阅读以下行. [gestureR setDirection:UISwipeGestureRecognizerDirectionRight|UISwipeGestureRecognizerDirectionRight)];

你有没有意识到你加入UISwipeGestureRecognizerDirectionRight.两次!!

:d