ReactiveCocoa 4 を使用して検索テキストフィールドを実装しており、テキストが X 時間入力されなかった場合にのみ検索 API をヒットしたいと考えています。以前にスケジュールされたものをキャンセルし、textDidChange デリゲート メソッドで「executeSearch」セレクターを起動することで、以前にこれを行いました。これにより、入力するたびに、以前にスケジュールされた「executeSearch」セレクターがキャンセルされ、新しいセレクターが X 秒で起動するようにスケジュールされます。
これと同じ動作をしたいのですが、入力テキストにバインドされたシグナルプロデューサーからです。私の現在の実装は近いですが、同じではありません。この動作は、前のイベントをキャンセルするのではなく、テキスト入力イベントを 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 のドキュメントを調べて、どのシグナル関数を使用すべきかを判断するのに苦労しています! ありがとうございました!