1

こんにちは、私のアプリにはライブ検索があり、結果を同時に検索して表示します。すべてうまく機能しますが、キーボードが少し遅れているように見えます。

キーボードを遅延させずにライブ検索を行う方法はありますか。

これは、検索が検索結果をリロードする場所です。

- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString
{

[self filterListForSearchText:searchString scope:
[[self.searchDisplayController.searchBar scopeButtonTitles] objectAtIndex:[self.searchDisplayController.searchBar selectedScopeButtonIndex]]];

return YES;

}

前もって感謝します。

4

2 に答える 2

1

テーブル辞書全体を検索する場合は、別のスレッドで検索してみてくださいperformSelectorInBackground:

[self performSelectorInBackground:filterListForSearchText withObject:searchString scope:
[[self.searchDisplayController.searchBar scopeButtonTitles] objectAtIndex:[self.searchDisplayController.searchBar selectedScopeButtonIndex]]];

テーブル UI を更新する必要がある場合は、メイン スレッドを元に戻すことができますperformSelectorOnMainThread:

例:[self performSelectorOnMainThread:updateTableMethod];

4.0 より古い iOS バージョンをサポートする必要がない場合は、GCDを試すこともできます。

バックグラウンドでの検索が機能しない場合は、テーブルが一度にロードしようとしている行が多すぎます。一定量の行のみをロードし、ユーザーが下にスクロールするにつれてさらに多くの行をロードしたい場合があります。

于 2013-08-15T02:56:24.337 に答える