ReactiveCocoa 3 - bufferWithTime
ReactiveCocoa 3 - bufferWithTime
我一直在桥接使用RACSignal.bufferWithTime
。据我所知,它在 RAC 3 中没有等效项吗?是否有使用 RAC3 模仿 bufferWithTime
行为的解决方法/技巧?
我的案例场景是我需要跟踪用户是否在给定的短时间内点击了两次(以捕获双击)。我基本上用大约 0.2 秒缓冲它,看看是否有超过一次点击。仅供参考,我不能使用 UIGestureRecognizer
,因为我使用的是第三方对象,它只显示一次点击 API。
谢谢!
您不需要 bufferWithTime
,只需检查每次点击的时间戳即可完成。请按照以下步骤操作:
- 在第三方对象上创建点击事件信号。
map
点击事件的信号转化为表示当前时间的时间戳点击发生的时间。
- 在点击事件的信号上使用
combinePrevious
来创建一个信号,其值是两个时间戳的元组:第一个是以前的值,第二个是当前值。
filter
通过从第二个值中减去每个元组中的第一个值,并比较它是否达到或超过您的 0.2
秒阈值来发出此信号。
只要最终信号发送一个值,就会在上一次点击后的 0.2 秒内发生一次点击。
我一直在桥接使用RACSignal.bufferWithTime
。据我所知,它在 RAC 3 中没有等效项吗?是否有使用 RAC3 模仿 bufferWithTime
行为的解决方法/技巧?
我的案例场景是我需要跟踪用户是否在给定的短时间内点击了两次(以捕获双击)。我基本上用大约 0.2 秒缓冲它,看看是否有超过一次点击。仅供参考,我不能使用 UIGestureRecognizer
,因为我使用的是第三方对象,它只显示一次点击 API。
谢谢!
您不需要 bufferWithTime
,只需检查每次点击的时间戳即可完成。请按照以下步骤操作:
- 在第三方对象上创建点击事件信号。
map
点击事件的信号转化为表示当前时间的时间戳点击发生的时间。- 在点击事件的信号上使用
combinePrevious
来创建一个信号,其值是两个时间戳的元组:第一个是以前的值,第二个是当前值。 filter
通过从第二个值中减去每个元组中的第一个值,并比较它是否达到或超过您的0.2
秒阈值来发出此信号。
只要最终信号发送一个值,就会在上一次点击后的 0.2 秒内发生一次点击。