Перемещение вида таблицы 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;
 }
}
Другие вопросы по тегам