带有 searchController 的 tableView 的奇怪滚动行为

Strange scrolling behaviour of tableView with searchController

我已经为 ViewController 实现了 UISearchController,上面有 tableView现在我面临着 tableView 奇怪的滚动行为问题。向下滚动 tableView 并点击状态栏滚动回到顶部后,tableView 没有返回到其正确位置(在导航栏正下方)。看起来它中途停止了反弹动画。如果你在那之后触摸 tableView,它会回到顶部。看看这个 gif自己看

问题仍然存在于模拟器和真实设备上 (iPhone7)

这是我设置 searchController 的代码:

class MyViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, UISearchResultsUpdating {

@IBOutlet weak var tableView: UITableView!

var searchController = UISearchController(searchResultsController: nil)        

override func viewDidLoad() {
   searchController.searchResultsUpdater = self
   searchController.obscuresBackgroundDuringPresentation = false
   searchController.searchBar.placeholder = "Search..."
   navigationItem.searchController = searchController
   definesPresentationContext = true 
   }
...
}

什么可能导致这种行为以及如何解决这个问题?

也许有几件事可以尝试:

  • 我记得将布局约束设置为 Superview 而不是安全区域,这有助于在 ViewController 嵌入到导航控制器。

  • 如果第一个没有,也将此 属性 添加到 ViewController 可能会有所帮助:

    extendedLayoutIncludesOpaqueBars = true