移动SearchBar表视图

时间:2013-12-27 06:17:43

标签: ios cocoa-touch uisearchbar

我有一个搜索栏和一个搜索显示控制器,并实现了相关的方法。在我的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 个答案:

答案 0 :(得分:0)

尝试在控制器中设置框架

- (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;
 }
}

答案 1 :(得分:0)

一个老问题,但我想我无论如何都会回答,希望它可以帮助其他人 - 我有同样的问题并且每当搜索字符串/结果更新工作时调用scrollRect - 你需要一个对视图控制器的引用(这种情况下的self.displayController)显示搜索结果。

    [self.displayController.tableView scrollRectToVisible:CGRectMake(0, 0, 1, 1) 
                                                 animated:NO];