【问题标题】:ios - How to select multiple cells in a single gesture?ios - 如何在一个手势中选择多个单元格?
【发布时间】:2015-02-16 16:58:11
【问题描述】:

希望通过长按手指并向下移动到后续单元格并同时选择这些单元格来选择多个 UITableviewCells,

任何人都知道使用 UILongPressGestureRecognizer 这样做的方法

(想想 Spotify 触摸预览)

【问题讨论】:

  • 不要因为标题措辞有问题而对问题投反对票,但我非常感谢编辑请求。

标签: ios uitableview


【解决方案1】:

这可能会很棘手,但也许我可以为您指明正确的道路。

首先,您需要一种可靠的方式来开始长按并继续跟踪平移。您可能需要将UIPanGestureRecognizerUILongPressGestureRecognizer 结合使用,应用于视图本身(而不是单元格)。平移识别器激活后,您需要禁用 UITableView 手势识别器,以免它们干扰。所有这些都需要UIGestureRecognizerDelegate

有关组合长按和平移识别器的更多信息,请参阅这篇文章:

Combining a UILongPressGestureRecognizer with a UIPanGestureRecognizer

接下来,您需要一种有效的方法对视图中的单元格进行命中测试。假设您使用 self.view 作为手势识别器,请尝试:

if (panRecognizer.state == UIGestureRecognizerStateBegan || sender.state == UIGestureRecognizerStateChanged) {
    CGPoint location = [panRecognizer locationInView:self.view];
    UIView *subview = [self.view hitTest:location withEvent:nil];
}

然后您可以将其与表格视图中的单元格关联并触发选择:

if ([subview isKindOfClass:[UITableViewCell class]]) {
    NSIndexPath *path = [tableView indexPathForCell:(UITableViewCell *)subview];
    [tableView selectRowAtIndexPath:path animated:YES scrollPosition:UITableViewScrollPositionNone];
}

这完全是假设,但它应该是解决这个问题的直接方法。挑战在于配置手势识别器以与您的表格视图一起工作。

如果您有任何问题,请告诉我!

【讨论】:

  • 嗨,TTillage,我将上面指定的代码与链接帖子中的代码结合在一起,虽然我可以让平移手势代表在长按后触发,但它只会在一个单元格上触发并且不会转移转到下一个。
  • 如果你想发布相关的代码 sn-ps 我很乐意去看看,看看有没有什么不合适的地方。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-21
  • 1970-01-01
  • 2019-12-16
相关资源
最近更新 更多