如何检测 UITableView 标题何时滚动?
Posted
技术标签:
【中文标题】如何检测 UITableView 标题何时滚动?【英文标题】:How to detect when UITableView header scrolls? 【发布时间】:2017-10-14 22:03:35 【问题描述】:我目前有一个 UITableView,其 HeaderView 是 UIScrollView。我将其用作一种轮播,显示不断旋转的信息,每两秒触发一次计时器。我想要做的是检测用户何时自己移动了滚动视图。这是我现在必须处理 ScrollView 移动的代码。
override func viewDidLoad()
var myTimer = Timer.scheduledTimer(timeInterval: 2, target: self, selector: #selector(runTimedCode), userInfo: nil, repeats: true)
func runTimedCode()
var itemCount = newsArray.count // how many items are in the news reel
if currentPage < itemCount
let newX = CGFloat(currentPage) * self.view.frame.width // calculate next page position
featuredScrollView.setContentOffset(CGPoint(x: newX, y: 0), animated: true)
currentPage += 1
else
// end of items
currentPage = 0
let newX = CGFloat(currentPage) * self.view.frame.width // calculate next page position
print("new x = \(newX)")
featuredScrollView.setContentOffset(CGPoint(x: newX, y: 0), animated: true)
然而,scrollViewDidScroll 函数只在 tableview 移动时被调用。有什么方法可以检测tableView上方的ScrollView何时滚动?我完全坚持这一点,任何帮助表示赞赏。谢谢!
【问题讨论】:
你设置了滚动视图的代理吗? @koropok facepalm...我完全忘记了。这解决了这个问题。我想我的下一个问题是如何区分何时滚动 tableView 和何时滚动 ScrollView? 你看过这个吗?不确定这是否是一个解决方案,但我认为答案可能是这个的派生词。 ***.com/a/7706175/4475605 这是另一个有趣的。 ***.com/a/41124033/4475605 【参考方案1】:首先,确保您已设置委托,以便您的视图控制器从滚动视图和表格视图中获取事件。
接下来,保留引用以确保您可以区分这两个视图。
最后,检查哪个引用触发了 viewdidscroll 函数并在那里编写代码。
let view1:UIScrollView!
let view2:UITableView!
view1.delegate = self
view2.delegate = self
func scrollViewDidScroll(_ scrollView: UIScrollView)
if scrollView == view1
// Do something
if scrollView == view2
// Do something
【讨论】:
这非常有效,谢谢。不敢相信我没有想到这一点以上是关于如何检测 UITableView 标题何时滚动?的主要内容,如果未能解决你的问题,请参考以下文章
对于这种边缘情况,如何检测何时从 iOS 的 uitableview 中删除单元格?