ios – UISearchBar在操作文本字段时移动

我遇到了一个引起严重问题的问题.

在Interface Builder中,我有一个仅包含tableview的场景.此子类的控制器UITableViewController.我有另一个场景,顶部有一个高度为50的视图,横跨视图的宽度.下面是一个最终包含列表或地图的容器视图.控制器是UIViewController的子类.这是模拟器上的样子……

《ios – UISearchBar在操作文本字段时移动》

请注意,您在上图中看到的列表是一个完全不同的表和视图控制器.搜索栏控制器用于按城市或邮政编码搜索位置.搜索栏控制器的表视图覆盖其他列表.当从搜索表中选择位置时,该位置的区域被馈送到另一个控制器,该控制器使用私有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,搜索栏会下拉导航栏的确切高度,在其上方留下一个大的空白区域.

《ios – UISearchBar在操作文本字段时移动》

如果self.definesPresentationContext为false,则行为和结果不同.在这种情况下,当我点击搜索字段时,一切看起来都很好.但是一旦我开始输入,导航控制器就会被白色覆盖.搜索栏不会改变位置.如果我使用Reveal,我可以看到导航栏已被推回堆栈中.这是看起来像……

《ios – UISearchBar在操作文本字段时移动》

我错过了什么?

最佳答案 我有同样的问题尝试在showController的viewDidLoad中使用以下代码行.

  self.extendedLayoutIncludesOpaqueBars = true
点赞