UISearchDisplayController без мгновенного поиска: как мне управлять затемнением TableView? - PullRequest
4 голосов
/ 14 декабря 2010

Я реализовал UISearchDisplayController, используя справочный образец Apple TableSearch . Мой список содержит чуть более 10.000 элементов, и это делает фильтрацию слишком медленной для выполнения каждого символа, который вводит пользователь. Мне удалось ограничить поиск, когда пользователь нажимает кнопку поиска со следующим кодом.

- (void)searchBarSearchButtonClicked:(UISearchBar*)searchBar
{
    [self filterContentForSearchText:[self.searchDisplayController.searchBar text]
        scope:[self.searchDisplayController.searchBar selectedScopeButtonIndex]];
    [self.searchDisplayController.searchResultsTableView reloadData];
}

- (BOOL)searchDisplayController:(UISearchDisplayController*)controller
    shouldReloadTableForSearchString:(NSString*)searchString
{
    return NO;
}

Теперь моя проблема в том, что как только пользователь вводит первый символ, исчезает затемнение табличного представления, и я хотел бы оставить его недоступным, пока пользователь не нажмет на кнопку поиска. (Или отменяет поиск.)

1 Ответ

3 голосов
/ 31 декабря 2010

searchDisplayController - это черный ящик, поэтому у вас нет никакого контроля над тем, когда он отображает searchResultsTableView (который появляется при первом нажатии клавиши на панели поиска).

Вы можете отобразить полупрозрачное представление поверх resultsTableView, чтобы создать видимость начального затемнения, обеспечиваемого searchDisplayController, но searchResultsTableView все еще будет виден.

- (BOOL)searchDisplayController:(UISearchDisplayController*)controller
    shouldReloadTableForSearchString:(NSString*)searchString
{
    // display a translucent view over the searchResultsTableView and
    // make sure it's only created on first key press
    return NO;
}

Другой вариант - написать собственный код.

...