【问题标题】:Strange scrolling behaviour of tableView with searchController带有 searchController 的 tableView 的奇怪滚动行为
【发布时间】:2023-03-31 19:20:01
【问题描述】:

我已经用 tableViewViewController 实现了 UISearchController,现在我遇到了 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 
   }
...
}

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

【问题讨论】:

    标签: ios swift uitableview uisearchbar uisearchcontroller


    【解决方案1】:

    也许可以尝试几件事:

    • 我记得当 ViewController 嵌入到导航控制器中时,将布局约束设置为 Superview 而不是 Safe Area 帮助我的 tableView 滚动。

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

      extendedLayoutIncludesOpaqueBars = true
      

    【讨论】:

    • 这些选项解决了这个问题。有趣的是,它只有在我两者都做的时候才有效。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-23
    • 2016-12-18
    • 1970-01-01
    • 2016-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多