私は現在実装を後悔していますUISearchDisplayController
を持っています。問題は、自分の検索コントローラがWebサービスにアクセスし、[tableView reloadData]
を呼び出してUITableView
を更新することです。ユーザーがキーを入力するたびに、キーが検索されます。私はASIHTTPRequest
を呼び出す前に少なくとも3文字を要求することで症状を部分的に緩和することができましたが、より良い方法が必要です。基本的にはUISearchDisplayController
をN秒間待つか、ユーザーが検索する前に「検索」を押すようにします。ここに私が今いるもの:UISearchDisplayController - N秒間待つか、検索の前にユーザーが「検索」を押すのを待ちます。
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString {
if (searchString.length > 2) {
ASIHTTPRequest *request = [IKRequestBuilder requestForIKDogFoodWithQueryString:searchString];
[request setDelegate:self];
[request startAsynchronous];
}
return NO;
}
#pragma mark - ASI HTTP Request
- (void)requestStarted:(ASIHTTPRequest *)request {
//show activity view over table view
}
- (void)requestFinished:(ASIHTTPRequest *)request {
NSString *response = [request responseString];
self.dogFoods = [IKJsonFactory buildIKDogFoodArrayWithJSON:response];
[self.searchDisplayController.searchResultsTableView reloadData];
}
こんにちはgamozzii、あなたの答えをありがとう - あなたのコードは動作しますが、あなたはclaを使う必要がありますssメソッド '[NSTimer scheduledTimerWithTimeInterval]'ではなく、 '[NSTimer timerWithTimeInterval]'でなければ動作しません。乾杯! –
うれしいこと - 訂正してくれてありがとう。 – gamozzii