【发布时间】:2015-02-16 16:58:11
【问题描述】:
希望通过长按手指并向下移动到后续单元格并同时选择这些单元格来选择多个 UITableviewCells,
任何人都知道使用 UILongPressGestureRecognizer 这样做的方法
(想想 Spotify 触摸预览)
【问题讨论】:
-
不要因为标题措辞有问题而对问题投反对票,但我非常感谢编辑请求。
标签: ios uitableview
希望通过长按手指并向下移动到后续单元格并同时选择这些单元格来选择多个 UITableviewCells,
任何人都知道使用 UILongPressGestureRecognizer 这样做的方法
(想想 Spotify 触摸预览)
【问题讨论】:
标签: ios uitableview
这可能会很棘手,但也许我可以为您指明正确的道路。
首先,您需要一种可靠的方式来开始长按并继续跟踪平移。您可能需要将UIPanGestureRecognizer 与UILongPressGestureRecognizer 结合使用,应用于视图本身(而不是单元格)。平移识别器激活后,您需要禁用 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];
}
这完全是假设,但它应该是解决这个问题的直接方法。挑战在于配置手势识别器以与您的表格视图一起工作。
如果您有任何问题,请告诉我!
【讨论】: