在包含可点击标签

时间:2016-03-23 09:10:14

标签: ios uitableview cocoa-touch uigesturerecognizer didselectrowatindexpath

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

我注意到,根据我的说法或Google的问题,我会得到2个不同的答案。

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

解决方案B。 我在几个线程上看到的另一个解决方案是在tableView:didSelectRowAtIndexPath:中实现一个tap计数器,并结合一个短计时器。有许多这些线程作为公认的答案,但它们都没有任何接近解决方案A的答案。

为什么一个比另一个好?

两个解决方案的问题在于,手势会吸引我的属性标签点击,而...didSelectRow...解决方案会阻止用户快速点击多个单元格而不会出现问题;这是草率的,留下了错误的空间。

1 个答案:

答案 0 :(得分:0)

你可以有两个手势。

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];

这在很多场合对我有用。