取消搜索后,UISearchController稍有覆盖

时间:2018-07-16 23:23:21

标签: objective-c xcode uisearchcontroller

我试图创建一个UISearchController,以简单地搜索UITableViewController中的项目。到目前为止,除了取消搜索后搜索栏的位置以外,其他所有功能都正常运行。我已经使用下面的代码以编程方式添加了它。

resultsVC = [UITableViewController new];
resultsVC.tableView.dataSource = self;
resultsVC.tableView.delegate = self;
resultsVC.clearsSelectionOnViewWillAppear = true;
//register custom table cell

searchController = [[UISearchController alloc] initWithSearchResultsController:resultsVC];
searchController.searchResultsUpdater = self;
searchController.dimsBackgroundDuringPresentation = false;
self.tableView.tableHeaderView = searchController.searchBar;

self.clearsSelectionOnViewWillAppear = YES;
self.definesPresentationContext = true;

首次启动应用程序时,搜索栏会正确显示如下。

Search Bar of UISearchController shown properly as headerView of my UITableView

但是在单击搜索栏然后取消搜索之后,当搜索栏返回其原始位置时,导航栏会稍微覆盖它。

Here the search bar is slightly covered

似乎表格视图无缘无故地向下滚动。我可以通过向上滚动tableView轻松地将屏幕返回到第一张图片,但是我想自动执行此操作,或者根本不必向上滚动。我觉得这是xcode或其他方面的错误,虽然没什么大不了,但是却很烦人,我知道必须解决一些问题。如何以编程方式确保搜索栏返回正确的位置?

到目前为止,我已经尝试过弄乱搜索控制器以及包含搜索控制器的ViewController上的属性。我尝试更改的属性为adjustScrollViewInsetsdefinesPresentationContextextend edges Under Top Bars from the Storyboard。我不想在UISearchController上使用hidesNavigationBarDuringPresentation

我也曾尝试在按下“取消”按钮时使用SearchController委托方法,以尝试在取消搜索后滚动到表格视图的顶部,但这也不起作用。

我尝试了这两种滚动到顶部的方法。

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

[self.tableView setContentOffset:CGPointZero animated:YES];

有人有解决此问题的经验吗?谢谢您的阅读!

0 个答案:

没有答案