如何在聚焦时调整 UISearchController.searchBar 的大小问题?
How to resizing issue of UISearchController.searchBar when focused?
我们开发了一个应用程序 iOS 5 很久以前我们在 storyboard
上使用 'Search Bar and Search Display Controller' 对象。由于 iOS8
UISearchDisplayController
是 deprecated
,我试图用 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 的主要和次要列。
我们开发了一个应用程序 iOS 5 很久以前我们在 storyboard
上使用 'Search Bar and Search Display Controller' 对象。由于 iOS8
UISearchDisplayController
是 deprecated
,我试图用 UISearchController
.
由于 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 的主要和次要列。