如何在聚焦时调整 UISearchController.searchBar 的大小问题?

How to resizing issue of UISearchController.searchBar when focused?

我们开发了一个应用程序 iOS 5 很久以前我们在 storyboard 上使用 'Search Bar and Search Display Controller' 对象。由于 iOS8 UISearchDisplayControllerdeprecated,我试图用 UISearchController.

删除现有的 'Search Bar and Search Display Controller'

由于 UISearchController 在界面上的 'Object Library' 中不可用,我已使用以下代码以编程方式将其添加到 interface 上的 UIView 中:

//Set up Search Controller
self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil];
self.searchController.searchResultsUpdater = (id)self;
self.searchController.dimsBackgroundDuringPresentation = YES;
self.searchController.searchBar.delegate = self;

//Adding as subview to UIView 'searchBarContainer'
[self.searchBarContainer addSubview:self.searchController.searchBar];
[self.searchBarContainer bringSubviewToFront:self.searchController.searchBar];

self.definesPresentationContext = YES;
self.extendedLayoutIncludesOpaqueBars = YES;

并设置'searchController'的frame等于UIView如下:

UISearchBar *ctrlSearchBar = self.searchController.searchBar;
ctrlSearchBar.frame = CGRectMake(0, 0, self.searchBarContainer.frame.size.width, self.searchBarContainer.frame.size.height);

searchBar 的大小很好,但是当它专注于点击它时,'searchBar' 的宽度会自动增加。

我什至尝试使用 NSLayoutConstraints 但没有解决问题。 任何人都可以帮助如何修复 'UISearchController.searchBar' 的大小,即使它是焦点?

正如 surToTheW 在他的评论中所建议的那样,我创建了一个带有 UISearchController 的自定义 UIViewController。我将它作为子视图控制器添加到我的主 UIViewController 中,并且搜索栏没有超过自定义 UIViewController 的视图宽度。

在 UISplitViewController 主列中的 searchBar 上下文中,searchBar 文本字段的宽度大约是该列的两倍。在输入大约 10 个字符之前,用户键入是不可见的。 使用安装searchBar 的iOS10 方法可以避免该问题。 使用iOS10和更早的搜索器安装方法如下

tableView.tableHeaderView = searchController.searchBar

'new' iOS 11 及更高版本的方法似乎主列太宽,进而使 searchText 字段太大。

navigationItem.searchController = searchController

您可以使用 Apple 示例应用程序“使用搜索控制器显示可搜索的内容”并查看 MainTableViewController.viewDidLoad() 以了解这两种方法的示例。 将 UISplitViewController 添加到示例应用程序以查看宽度问题。

已就此问题提交反馈助手报告 - 请参阅 FB9515194

iPadOS 14.7.1。 iPad 横向显示 UISplitViewController 的主要和次要列。