Я недавно начал искать что-то вроде этого для Ruby. На что я натыкался до сих пор:
, Они могли бы быть местами для запуска. К сожалению, я не использовал ни одного из трех достаточно все же для предложения хорошего мнения.
Вы хотите, чтобы клиентский эквивалент $ _ SERVER ['PHP_SELF']
? Что-то, что всегда будет ссылаться на файл без лишних вещей после расширения?
I ' а также вы должны вернуть 0 результатов при редактировании строки поиска
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString
{
savedSearchTerm = searchString;
[controller.searchResultsTableView setBackgroundColor:[UIColor colorWithWhite:0.0 alpha:0.8]];
[controller.searchResultsTableView setRowHeight:800];
[controller.searchResultsTableView setScrollEnabled:NO];
return NO;
}
- (void)searchDisplayController:(UISearchDisplayController *)controller didHideSearchResultsTableView:(UITableView *)tableView
{
// undo the changes above to prevent artefacts reported below by mclin
}
, я думаю, вы поймете, что делать дальше
этого должно быть достаточно для реализации следующего метода в вашем UISearchDisplayDelegate (который обычно является вашим пользовательским подклассом UITableViewController)
- (BOOL) searchDisplayController: (UISearchDisplayController *) controller shouldReloadTableForSearchString: (NSString *) searchString
{
[self startMyCustomWebserviceSearchAsBackgroundProcessForString: searchString]; //starts new NSThread
return NO;
}
пробовали ли вы это?
Вы пробовали это:
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(_lookup:) object:nil];
[self performSelector:@selector(_lookup:) withObject:txt afterDelay:0.20];
Таким образом, если пользователь вводит другой символ в течение 1 / 5сек, вы делаете только один веб-вызов.
На основе кода пользователя 182820 ниже приведена моя версия. Я скрываю табличное представление UISearchDisplayController. Когда в поле поиска вводится символ, я помещаю 'dimmed view', так что это выглядит так, как будто 'dimmed view' UISearchDisplayController никогда не исчезал, а затем убираю его, когда поиск завершен. Если ввести несколько символов и нажать отмену, то вид таблицы на короткое время становится полностью белым, и я не знаю, как это обойти.
- (void)viewDidLoad {
...
tableViewMask=[UIView new];
tableViewMask.backgroundColor = [UIColor blackColor];
tableViewMask.alpha = 0.8;
}
- (void)searchDisplayControllerDidBeginSearch:(UISearchDisplayController *)controller{
tableViewMask.frame=CGRectMake(self.tableView.frame.origin.x, self.tableView.frame.origin.y+controller.searchBar.frame.size.height, self.tableView.frame.size.width, self.tableView.frame.size.height-controller.searchBar.frame.size.height);
controller.searchResultsTableView.hidden=YES;
}
- (void)searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller{
[tableViewMask removeFromSuperview];
}
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString{
if (searchString.length==0)
[tableViewMask removeFromSuperview];
else
[self.tableView addSubview:tableViewMask];
[searchText autorelease];
searchText=[searchString retain];
return NO;
}
Я нашел способ получше, так как есть ошибка с «лучшим ответом» - при прокрутке черной фоновой таблицы будут отображаться разделитель и «Нет результатов».
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString {
controller.searchResultsTableView.backgroundColor = [UIColor blackColor];
controller.searchResultsTableView.alpha = 0.8;
controller.searchResultsTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
for(UIView *subview in tableView.subviews) {
if([subview isKindOfClass:UILabel.class]) {
subview.hidden = YES;
}
}
return NO;
}
- (void) searchBarSearchButtonClicked:(UISearchBar *)searchBar {
self.searchDisplayController.searchResultsTableView.backgroundColor = [UIColor whiteColor];
self.searchDisplayController.searchResultsTableView.alpha = 1;
self.searchDisplayController.searchResultsTableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
for(UIView *subview in tableView.subviews) {
if([subview isKindOfClass:UILabel.class]) {
subview.hidden = NO;
}
}
// search results and reload data ....
}