带有 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
我已经为 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