iOS 11 tableViewHeader 中的搜索栏在焦点上跳转到屏幕顶部

Ale*_*dar 5 objective-c uitableview uisearchbar ios uisearchcontroller

这里这里已经有 2 个关于这个主题的未答复的帖子,没有人为这个问题提供有效的解决方案。

第一张图片显示了搜索控制器的 iOS 10 行为,您可以在其中看到左侧的层次结构和右侧的红色框内的搜索控制器框架。中心蓝色的视图是表中正确显示的视图。 这是搜索控制器的 iOS 10 行为

第二张图显示了 iOS 11 的行为,其中搜索控制器退出标题边界tableView,并移动到屏幕顶部,这是没有意义的,因为表格视图位于距屏幕顶部 230 像素的位置。 这是 iOS 11 的行为

我用来显示所有这些的代码如下(在 中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];
Run Code Online (Sandbox Code Playgroud)

zcu*_*i93 5

从iOS11开始,搜索控件成为导航栏的一部分。你将需要类似下面的东西

Objective-C if (@available(iOS 11.0, *)) { self.navigationItem.searchController = searchController } else { self.tableView.tableHeaderView = searchController.searchBar }

迅速

if #available(iOS 11.0, *) {
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

3786 次

最近记录:

5 年,11 月 前