У меня есть UITableViewController с настройкой UISearchDisplayController стандартным способом (с панелью поиска внутри tableView).Я бы хотел, чтобы панель поиска начиналась скрытой - действительно скрытой, а не просто прокручиваемой , как в этом решении .Затем я хотел бы представить пользовательский интерфейс поиска, когда пользователь нажимает кнопку, и скрывать ее снова (действительно скрывать) после того, как пользователь выбирает один из элементов, найденных в поиске.
Вот почти рабочий коддля этого:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
self.searchDisplayController.searchBar.prompt = @"Add an item";
self.searchDisplayController.searchBar.placeholder = @"Type the item name";
// i do this to trigger the formatting logic below
[self.searchDisplayController setActive:YES animated:NO];
[self.searchDisplayController setActive:NO animated:NO];
// rest of my view will appear
}
- (void)searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller {
NSTimeInterval duration = (self.isViewLoaded && self.view.window)? 0.3 : 0.0;
__block CGFloat searchBarHeight = controller.searchBar.frame.size.height;
[UIView animateWithDuration:duration animations:^{
self.tableView.contentOffset = CGPointMake(0, searchBarHeight);
self.tableView.contentInset = UIEdgeInsetsMake(-searchBarHeight, 0, 0, 0); // trouble here, I think
} completion:^(BOOL finished) {
controller.searchBar.hidden = YES;
}];
}
, чтобы показать
- (IBAction)pressedAddButton:(id)sender {
self.searchDisplayController.searchBar.hidden = NO;
[self.searchDisplayController setActive:YES animated:YES];
}
Я думаю, что я правильно устанавливаю вставку содержимого, но это ведет себя неожиданно: с кодом, как показано, таблица позволяет содержимомупереместиться слишком далеко, то есть, имея только два не очень высоких ряда, я могу прокрутить вниз, толкая большинство этих двух рядов над верхней частью таблицы ... как будто нет отскока снизу.Когда я закомментирую строку contentInset, таблица позволяет мне переместить содержимое слишком далеко, оставляя большой пробел над строкой 0, предположительно там, где скрыта строка поиска.
Сильно благодарен, если кто-то может помочь.