【问题标题】:How to add Swipe Gestures to UITableView cell?如何将滑动手势添加到 UITableView 单元格?
【发布时间】:2011-12-19 16:16:21
【问题描述】:

我在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 另一个手势到单元格,但现在使用。

【问题讨论】:

    标签: iphone objective-c ios5 swipe-gesture uiswipegesturerecognizer


    【解决方案1】:

    试试这个

    UISwipeGestureRecognizer* 手势R; 手势R = [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom)] autorelease]; 手势R.direction = UISwipeGestureRecognizerDirectionLeft; [查看 addGestureRecognizer:gestureR]; 手势R = [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom)] autorelease]; 手势R.direction = UISwipeGestureRecognizerDirectionRight; // 默认 [查看 addGestureRecognizer:gestureR];

    如果您想处理左右滑动的不同功能,只需更改选择器即可。

    【讨论】:

      【解决方案2】:

      不要两次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
           }
      }
      

      【讨论】:

        【解决方案3】:

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

        您是否意识到您添加了UISwipeGestureRecognizerDirectionRight。两次!!

        :D

        【讨论】:

        • 谢谢。为了公正的记录[gestureR setDirection:UISwipeGestureRecognizerDirectionLeft|UISwipeGestureRecognizerDirectionRight)]; 效果很好。在 Xcode 4.6.2 上试用和测试
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-09
        • 2011-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多