0

searchBarが追加されたtableViewを実装しました。ユーザーが検索バーに検索キーワードを入力し始めたら、サービスを呼び出したい。changeサービスを呼び出すイベントリスナーでサービスを呼び出すことができることを知っています。

検索バーを変更するたびに、サービスを呼び出すのは良くないことを私は知っています。では、検索結果がサービスコールからのものである場合に検索バーを使用する効率的なアプローチは何ですか、または検索を効率的にするために何ができるでしょうか。

例:AppleのAppStoreの検索機能

4

1 に答える 1

0

私は自分のテストプロジェクトの1つでこのようなことをしました。ルックアップを試みる前に、変更イベントで少なくとも3文字が入力されていることを確認します。なぜ3を使用したのかわかりませんが、データをフィルタリングするのに適切な数の文字のように見えました。また、ネットワーク要求が進行中であることを示すフラグを設定します。したがって、3文字を入力した場合、ルックアップがまだ進行中でなければ、検索を開始できます。進行中のネットワークリクエストがあった場合は、待機間隔を設定して、リクエストが戻ってきたかどうかを確認し続け、戻ってきたときに追加のリクエストを開始できます。私はアイテムの短いリストを送り返しました。それは私のテーブルが速く見えるように私にとっては25でした。

私はこれをしませんでしたが、ユーザーが入力を終了したことを確認するために、入力された文字間の時間間隔を追跡することができました。最適な間隔を得るには、平均的なユーザーにとって妥当なものを試す必要があります。これについて、通常はパワーユーザー以外のユーザーからフィードバックを受け取ります。

ルックアップの途中で問題が発生する可能性がありますが、ユーザーはまだ入力中です。これらの文字の更新を追跡し、更新された文字列の追加検索を開始する必要がある場合があります。その時点で送信した文字検索文字列を入力ボックスの現在の文字で確認し、すでに受信した検索アイテムのリストを破棄して、別の検索を実行することもできます。

受け取ったアイテムのリストを表示して、アプリが機能していることをユーザーに知らせることができますが、すぐに別のルックアップアイテムのリクエストを自動的に送信します。たまにテーブルに何かを表示しないと、ユーザーは最終的にキーを叩き始め、アプリが応答しないと考える可能性があります。

于 2012-10-17T17:46:42.960 に答える