ReactiveCocoa 4を使用して検索テキストフィールドを実装していて、Xの時間テキストが入力されていない場合のみ検索APIをヒットさせたいとします。私はこれまで、以前にスケジュールされたものをキャンセルし、textDidChangeデリゲートメソッドで "executeSearch"セレクタをオフにしてこれを行いました。これにより、入力するたびに以前にスケジュールされた「executeSearch」セレクタがキャンセルされ、新しいセレクタがX秒間に起動するようにスケジュールされます。ReactiveCocoa 4 - シグナルイベントの遅延とフィルタリング
この同じ動作をしたいが、信号プロデューサから入力テキストにバインドしたい。現在の実装は近いですが、同じではありません。この動作は、直前のイベントをキャンセルするのではなく、0.5秒ごとに発生するようにテキスト入力イベントを抑制するだけです。
searchTextInput.producer.delay(0.3, onScheduler: RACScheduler.currentScheduler())
.throttle(0.5, onScheduler: RACScheduler.currentScheduler())
.producer.startWithNext({ [unowned self] searchText in
self.executeSearch(searchText)
})
ReactiveCocoa 4のドキュメントでは、どの信号機能を使用するべきかを知るのに苦労しています。ありがとうございました!