有2个未回复的帖子here和here,其中没有人提供了解决此问题的工作方案。iOS 11在tableViewHeader中的搜索栏跳转到焦点上的屏幕顶部
第一张图显示了搜索控制器的iOS 10行为,您可以在其中看到左侧的层次结构,右侧的搜索控制器框架以红色框起。在中心以蓝色显示的是在表格中正确显示的。
第二个图像显示的iOS 11行为,其中搜索控制器退出tableView
标题的边界内,并移动到不具有意义的屏幕的顶部,因为表视图被从屏幕的顶部定位在230个像素。
我用于显示所有的这种代码是下面的(在viewDidLoad
):
self.definesPresentationContext = YES;
self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil];
self.searchController.searchResultsUpdater = self;
self.searchController.dimsBackgroundDuringPresentation = NO;
self.searchController.searchBar.delegate = self;
self.searchController.searchBar.clipsToBounds = YES;
self.tableView.tableHeaderView = self.searchController.searchBar;
self.searchController.searchBar.placeholder = @"Enter name or email";
[self.searchController.searchBar sizeToFit];
而他们完全放弃支持用于搜索栏的tableView标题部分?我发现它能够像预期的那样聚焦。任何有关此文档的参考文献都证明了这一说法? – Aleksandar
这并不是说标题视图已从表格中删除,但现在应该在导航项目中执行搜索。请参阅此WWDC对话[更新您的iOS 11应用程序](https://developer.apple.com/videos/play/wwdc2017/204/)幻灯片第23页。 – zcui93
这是Apple推荐的内容,但并不总是有效:[iOS11 UISearchBar在嵌入UISplitViewController时在UINavigationBar中丢失](https://stackoverflow.com/questions/46387166/ios11-uisearchbar-missing-in-uinavigationbar-when-embedded-in-uisplitviewcontrol)。你仍然可以使用tableHeaderView,但不是没有一些调整... [在iOS11的tableHeaderView中使用UISearchController与UISearchBar](https://stackoverflow.com/questions/46737117/using-uisearchcontroller-with-uisearchbar-in-tableheaderview-in -ios11) –