4

我已经使用 Apple 的TableSearch示例参考实现了 UISearchDisplayController。我的列表包含超过 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;
}

现在,我的问题是,一旦用户输入第一个字符,表格视图的变暗就会消失,我想保持它变暗,直到用户单击“搜索”按钮。(或取消搜索。)

4

1 回答 1

3

searchDisplayController 是一个黑盒子,因此您无法控制它何时显示 searchResultsTableView(在 searchBar 中的第一次按键时)。

您可以在 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;
}

另一种选择是编写自己的代码。

于 2010-12-31T19:36:14.963 回答