我有一个搜索栏和一个搜索显示控制器,并实现了相关的方法。在我的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);
}
该表格显示在搜索栏下方,但出于某种原因,我无法点击上方的文字字段。我认为这种情况正在发生,因为表格视图仍然覆盖了所述字段,我之所以认为这是因为当我点击搜索栏并开始输入时,会出现一个覆盖所有内容的灰色区域。
答案 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];