使用searchController的tableView的奇怪滚动行为

时间:2019-01-22 16:26:13

标签: ios swift uitableview uisearchbar uisearchcontroller

我已经为 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 
   }
...
}

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

1 个答案:

答案 0 :(得分:0)

也许有几件事可以尝试:

  • 我记得将ViewController嵌入到导航控制器中时,将布局约束设置为 Superview 而不是安全区域帮助tableTable滚动时的安全区域。

  • 如果第一个不这样做,则将此属性添加到ViewController可能会有所帮助:

    extendedLayoutIncludesOpaqueBars = true