【问题标题】:Search bar overlapping status bar in search controller搜索控制器中的搜索栏重叠状态栏
【发布时间】:2017-11-27 03:45:51
【问题描述】:

我以编程方式在UITableViewController 中创建了UISearchController。它工作正常,但搜索栏没有正确显示状态栏。这是我的代码和一些屏幕截图。取消搜索时,它还会制作有趣的动画。

- (void)viewDidLoad
{
    [super viewDidLoad];

    _resultsTableViewController = [ResultsTableViewController new];
    _searchController = [[UISearchController alloc] initWithSearchResultsController:_resultsTableViewController];
    _searchController.searchResultsUpdater = _resultsTableViewController;
    _searchController.dimsBackgroundDuringPresentation = NO;
    self.definesPresentationContext = YES;
    self.tableView.tableHeaderView = _searchController.searchBar;       
}

这里应该有更多的填充与状态栏。

当你取消搜索时,我会在这里看到一个糟糕的动画,那就是状态栏的高度。

【问题讨论】:

标签: ios objective-c uisearchcontroller


【解决方案1】:

从您的屏幕截图看来,您正在使用 iOS 11,在此版本中,UISearchController 搜索栏添加到 UI 的方式发生了变化。在 iOS 11 上,导航项负责显示搜索,因此 UIKit 尚未更新以正确处理表格标题视图中显示的搜索栏。

在 iOS ≤10 上你应该继续使用

self.tableView.tableHeaderView = _searchController.searchBar;

但切换到

self.navigationItem.searchController = _searchController;
self.navigationItem.hidesSearchBarWhenScrolling = YES;

在 iOS 11 及更高版本上。

【讨论】:

  • 我的代码与问题相同,并且仅在 iOS11.2.5 和 iPhone 6s 中面临相同的问题。与所有其他设备一起工作正常。当我单击搜索时出现此问题,键入内容并单击搜索结果中的一个项目 - > 重定向到下一个屏幕并返回到第一个屏幕。知道需要做什么吗?
  • 最好在一个单独的问题中提出这个问题,提供有关问题和代码的所有详细信息。
【解决方案2】:

只是一个快速的附加警告,除非您指定不希望它隐藏 NavBar,否则 searchBar 可能仍会在

    if (@available(iOS 11.0, *)) {
        self.navigationItem.searchController = self.mySearchController;
        self.navigationItem.hidesSearchBarWhenScrolling = YES;
    } else {
        // Fallback on earlier versions
        self.tableView.tableHeaderView = self.mySearchController.searchBar;       // show the SearchBar in TV header
        self.mySearchController.hidesNavigationBarDuringPresentation = NO;
    }

【讨论】:

    猜你喜欢
    • 2013-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-09
    • 1970-01-01
    相关资源
    最近更新 更多