Перемещение вида таблицы SearchBar
У меня есть панель поиска и контроллер отображения поиска с соответствующими методами реализованы. В моем xib
У меня есть текстовое поле над этой строкой поиска. Я хочу, чтобы табличное представление отображалось под моей строкой поиска, а не закрывало панель поиска или текстовое поле над ней.
Я попробовал это:
self.searchDisplayController.searchResultsTableView.frame = CGRectMake(0, 247, 320, 400);
Но это, похоже, не имеет никакого эффекта. Как мне установить UITableView
позиция?
ОК - с этим -
- (void)searchDisplayController:(UISearchDisplayController *)controller didShowSearchResultsTableView:(UITableView *)tableView {
tableView.frame = CGRectMake(0, 200, 320, 400);
}
Таблица появляется под строкой поиска, но по какой-то причине я не могу щелкнуть текстовое поле выше. Я думаю, что это происходит, потому что указанное поле все еще покрывается табличным представлением, и причина, по которой я думаю, это потому, что когда я нажимаю на панель поиска и начинаю печатать, появляется серая область, которая покрывает все.
2 ответа
Старый вопрос, но я решил ответить в любом случае в надежде, что это может помочь кому-то еще - у меня возникла та же проблема, и вызов scrollRect при каждом обновлении строки / результатов поиска работал - вам нужна ссылка на контроллер представления (self.displayController в этом случае), который отображает результаты поиска.
[self.displayController.tableView scrollRectToVisible:CGRectMake(0, 0, 1, 1)
animated:NO];
Попробуйте установить кадр в контроллере
- (void)searchDisplayController:(UISearchDisplayController *)controller didShowSearchResultsTableView:(UITableView *)tableView {
if ( [controller.searchBar.superview isKindOfClass: [UITableView class]] )
{
UITableView* staticTableView = (UITableView*)controller.searchBar.superview;
CGRect f = [tableView.superview convertRect: staticTableView.frame fromView: staticTableView.superview];
CGRect s = controller.searchBar.frame;
CGRect newFrame = CGRectMake(f.origin.x,
f.origin.y + s.size.height,
f.size.width,
f.size.height - s.size.height);
tableView.frame = newFrame;
}
}