具有大标题的UISearchController,在关闭UI时行为异常

我有一个UITableViewController,在导航栏中有一个UISearchController。

当我点击搜索时,向下拉一次然后按“取消”,我看到一个奇怪的UI行为。

具有大标题的UISearchController,在关闭UI时行为异常

我找不到发生这种情况的任何特殊原因。不会每次都复制此问题。如上面的GIF所示,导航栏上有一些按钮时,这种情况会更频繁发生。

当我回到第一个视图控制器(它没有任何导航栏按钮)并重复相同的步骤时,在极少数情况下会重现该问题。

仅当您下拉具有搜索控制器的ViewController时,才会发生此问题。如果您正在使用结果控制器并下拉结果控制器,则不会重现此问题。

以下是示例应用程序中使用的代码。

popleft

我尝试在UISearchControllerDelegate方法perfplotimport UIKit class SearchViewController: UITableViewController { lazy var resultsController = ResultsVC() lazy var searchController = UISearchController(searchResultsController: resultsController) override func viewDidLoad() { super.viewDidLoad() configureSearchController() navigationItem.largeTitleDisplayMode = .always navigationController?.navigationBar.prefersLargeTitles = true navigationItem.title = "Search VC" } func configureSearchController() { navigationItem.searchController = searchController navigationItem.hidesSearchBarWhenScrolling = true searchController.obscuresBackgroundDuringPresentation = false searchController.hidesnavigationBarDuringPresentation = true searchController.searchResultsUpdater = resultsController } override func tableView(_ tableView: UITableView,didSelectRowAt indexPath: IndexPath) { tableView.deselectRow(at: indexPath,animated: true) navigationController?.pushViewController(SearchViewController(),animated: true) } override func tableView(_ tableView: UITableView,numberOfRowsInSection section: Int) -> Int { return 50 } override func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = UITableViewCell() cell.textLabel?.text = "Searchable cell" return cell } } class ResultsVC: UITableViewController { override func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = UITableViewCell() cell.textLabel?.text = "Result cell" return cell } } extension ResultsVC: UISearchResultsUpdating { func updateSearchResults(for searchController: UISearchController) { print(searchController.searchBar.text) } } 中使用tableView.setContentOffet来更改tableView的内容偏移量,但是y位置因每个设备而异,并且不能通用。

PS:在大多数模拟器中不会发生此问题。因此,请在您的手机中尝试相同的代码。

iCMS 回答:具有大标题的UISearchController,在关闭UI时行为异常

通过设置

可以防止发生此问题

searchController.obscuresBackgroundDuringPresentation = true

这意味着用户在点击搜索后无法滚动表格视图。但是,在呈现结果控制器之后,用户可以滚动结果控制器。

本文链接:https://www.f2er.com/2222987.html

大家都在问