0

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

我的情况是我需要跟踪用户是否在给定的短时间内点击了两次(以捕获双击)。我基本上用大约 0.2 秒缓冲它,看看是否有不止一次的点击。FIY,我不能使用,UIGestureRecognizer因为我使用的第三方对象只公开了一个点击 API。

谢谢!

4

1 回答 1

1

您不需要bufferWithTime,只需检查每次点击的时间戳即可。按着这些次序:

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

每当最终信号发送一个值时,就会在前一次点击的 0.2 秒内发生一次点击。

于 2015-08-28T03:45:36.270 回答