Это довольно сложно. _DimmingView является приватным для searchDisplayController и выходит за пределы всех подпредставлений. То, что вы можете сделать, это прикрыть его вашим собственным представлением каждый раз, когда оно появляется ([searchString length] == 0 и DidBeginSearch)
(кадр tempView установлен для UISearchBar, помещенного в tableViewHeader таблицы)
- (void)viewDidLoad {
tempView = [[UIView alloc] initWith...];
// tempView setup
...
}
- (void)searchDisplayControllerDidBeginSearch:(UISearchDisplayController *)controller {
[tempView setFrame:CGRectMake(0, self.searchDisplayController.searchBar.frame.size.height, 320, self.searchDisplayController.searchResultsTableView.frame.size.height)];
[self.searchDisplayController.searchContentsController.view addSubview:tempView];
...
}
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString
{
if ([searchString length] == 0)
[self.searchDisplayController.searchContentsController.view addSubview:tempView];
else
[tempView removeFromSuperview];
...
}
- (void)searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller {
if (tempView && tempView.superview)
[tempView removeFromSuperview];
...
}
Примечания. Я попытался создать новый экземпляр в DidBeginSearch и выпустить его в DidEndSearch, и он работал только для первого вызова! Weird ...
Надеюсь, это поможет