【问题标题】:ReactiveCocoa 3 - bufferWithTimeReactiveCocoa 3 - bufferWithTime
【发布时间】:2015-11-17 09:14:56
【问题描述】:

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

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

谢谢!

【问题讨论】:

    标签: ios reactive-cocoa reactive-cocoa-3


    【解决方案1】:

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

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

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

    【讨论】:

    • 不知道combinePrevious 存在。你拯救了我的一天。非常感谢
    猜你喜欢
    • 2015-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-15
    • 1970-01-01
    • 2014-11-18
    相关资源
    最近更新 更多