ReactiveCocoa 3 - bufferWithTime

ReactiveCocoa 3 - bufferWithTime

我一直在桥接使用RACSignal.bufferWithTime。据我所知,它在 RAC 3 中没有等效项吗?是否有使用 RAC3 模仿 bufferWithTime 行为的解决方法/技巧?

我的案例场景是我需要跟踪用户是否在给定的短时间内点击了两次(以捕获双击)。我基本上用大约 0.2 秒缓冲它,看看是否有超过一次点击。仅供参考,我不能使用 UIGestureRecognizer,因为我使用的是第三方对象,它只显示一次点击 API。

谢谢!

您不需要 bufferWithTime,只需检查每次点击的时间戳即可完成。请按照以下步骤操作:

  1. 在第三方对象上创建点击事件信号。
  2. map点击事件的信号转化为表示当前时间的时间戳点击发生的时间
  3. 在点击事件的信号上使用 combinePrevious 来创建一个信号,其值是两个时间戳的元组:第一个是以前的值,第二个是当前值。
  4. filter 通过从第二个值中减去每个元组中的第一个值,并比较它是否达到或超过您的 0.2 秒阈值来发出此信号。

只要最终信号发送一个值,就会在上一次点击后的 0.2 秒内发生一次点击。