【发布时间】:2016-09-15 04:24:00
【问题描述】:
我遇到了一个令人头疼的问题。
在 Interface Builder 中,我有一个仅包含一个 tableview 的场景。这个子类 UITableViewController 的控制器。我有另一个场景,顶部有一个高度为 50 的视图,跨越视图的宽度。下面是一个容器视图,最终包含一个列表或地图。控制器是 UIViewController 的子类。这是它在模拟器上的样子...
请注意,您在上图中看到的列表是完全不同的表和视图控制器。搜索栏控制器用于按城市或 zip 搜索位置。搜索栏控制器的表格视图覆盖了另一个列表。当从搜索表中选择一个位置时,该位置的区域将被提供给另一个控制器,该控制器使用私有 Web 服务来检索兴趣点列表。
我正在调用以下方法将搜索栏添加到上述视图中。
- (void)setupSearchView {
self.searchTableViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"LocationSearchTable"];
self.searchController = [[UISearchController alloc] initWithSearchResultsController:self.searchTableViewController];
self.searchController.searchResultsUpdater = self.searchTableViewController;
[self.searchController.searchBar sizeToFit];
self.searchController.searchBar.tag = 9189;
self.searchController.searchBar.placeholder = @"Search by city or ZIP code";
[self.searchView addSubview:self.searchController.searchBar];
[[self.searchView viewWithTag:9189] becomeFirstResponder];
self.searchController.hidesNavigationBarDuringPresentation = false;
self.searchController.dimsBackgroundDuringPresentation = true;
self.definesPresentationContext = true;
}
当我在文本字段中单击并将 self.definesPresentationContext 设置为 true 时,搜索栏会下降到导航栏的确切高度,并在其上方留下一个大的空白区域。
如果 self.definesPresentationContext 为 false,则行为和结果不同。在这种情况下,当我单击搜索字段时,一切看起来都很好。但是当我开始键入时,导航控制器就被白色覆盖了。搜索栏不会改变位置。如果我使用 Reveal,我可以看到导航栏已被推回堆栈中。这就是它的样子......
我错过了什么?
【问题讨论】:
-
仔细看... 表格背景总是比表格的其他图层高 64 像素。
-
你是怎么解决这个问题的?
标签: ios objective-c uisearchbar uisearchcontroller