我的MainViewController
包含:
UIView
扩展名,是标题的一部分。身高:60 UIPageViewController
位于包含3个tableviews的标签栏下方(每个标签包含一个tableview)UIScrollView
我的目标是将整个视图滚动到顶部,这样只有标签栏保持可见(它应该粘在顶部),然后才能滚动UITableView。
我的方法很简单:
在我的TableView控制器中,我有:
override func scrollViewDidScroll(_ scrollView: UIScrollView) {
NotificationCenter.default.post(name: NSNotification.Name(rawValue: "TableViewScrolled"), object: nil)
}
在我的MainViewController中,我添加了一个观察者:
NotificationCenter.default.addObserver(self,
selector: #selector(self.handleScroll),
name: NSNotification.Name(rawValue: "TableViewScrolled"),
object: nil)
每次滚动TableView时,MainViewController
都会收到通知,而handleScroll
方法会执行以下操作:
@objc private func handleScroll(_ notification: NSNotification) {
scrollView.contentOffset.y = tableView.contentOffset.y
}
这只能部分起作用。效果如下: https://i.gyazo.com/b1f78c43f6847167295201f60731f274.mp4
问题是TableView的滚动速度比Header快(如上面的视频所示)。为什么会这样?如何解决这个问题呢?