在包含可点击标签的表格视图单元格中接受双击和单击

Posted

技术标签:

【中文标题】在包含可点击标签的表格视图单元格中接受双击和单击【英文标题】:Accepting double and single tap in table view cells that contain a tappable label 【发布时间】:2016-03-23 09:10:13 【问题描述】:

我想在我的表格视图单元格中接受单击和双击。我的每个单元格中也有带有主题标签的可点击标签,我希望保持可点击状态。这是一种独立的交互,与用户单击主题标签以外的某个位置时应该发生的交互不同。

我注意到,根据我用词或谷歌搜索问题的方式,我会得到 2 个不同的答案。

解决方案 A: UITapGestureRecognizer - single tap and double tap 其接受的答案表明 2 个有延迟的轻击手势识别器,并且有大量的支持。

解决方案 B。 我在几个线程上看到的另一个解决方案是在tableView:didSelectRowAtIndexPath: 中实现一个轻拍计数器,并结合一个短定时器。有很多这样的线程将其作为公认的答案,但没有一个像解决方案 A 的答案那样获得如此多的支持。

对于为什么一个比另一个更好有什么论据吗?

两种解决方案的问题在于手势会占用我的属性标签的点击,而...didSelectRow... 解决方案可防止用户快速点击多个单元格而不会出现问题;它是草率的,留下了出错的余地。

【问题讨论】:

我写的东西你连一个字都读了吗?我在我的问题中确实提到了这个确切的线程以及它的许多变体。 这两种解决方案的问题是手势会吸收我的属性标签#hashtag 点击,而 didselectrow 解决方案会阻止用户喜欢多个状态快速触发而没有问题/草率地留下错误空间。关闭这将是不负责任的边缘和滥用权力。这是一个深思熟虑的问题和真正的问题。 【参考方案1】:

你可以有 2 个手势。

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onClikOneTap:)];
tapGesture.numberOfTapsRequired = 1;

UITapGestureRecognizer *doubleTapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onClikDoubleTap:)];
doubleTapGesture.numberOfTapsRequired = 2;

用魔法线控制

[tapGesture requireGestureRecognizerToFail:doubleTapGesture];

这对我来说在很多场合都非常有效。

【讨论】:

请重新阅读包括 cmets,此解决方案可防止点击属性标签链接 我认为如果我们在每个单元格中添加一个具有相同单元格大小的视图并为该视图提供手势,它可能可以工作

以上是关于在包含可点击标签的表格视图单元格中接受双击和单击的主要内容,如果未能解决你的问题,请参考以下文章

在表格视图中点击按钮 - 错误的单元格

在表格视图单元格中双击应该在 didSelectRowAtIndexPath 之前 [重复]

修复表格视图单元格中的文本,ios?

为啥我的自定义表格单元格中的标签在单击行之前无法显示

如何为自定义表格视图单元格中的按钮单击获取不同的视图控制器

如何使用自定义表格视图单元格中识别的点击手势从 UILabel 呈现视图控制器?