如何检测 UITableView header 何时滚动?
How to detect when UITableView header scrolls?
我目前有一个 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何时滚动了吗?我完全坚持这一点任何帮助表示赞赏。谢谢!
首先,确保您设置了代理,以便您的视图控制器从滚动视图和 table 视图获取事件。
接下来,保留参考文献以确保您可以区分这两种观点。
最后,检查哪个引用触发了 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,它的 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何时滚动了吗?我完全坚持这一点任何帮助表示赞赏。谢谢!
首先,确保您设置了代理,以便您的视图控制器从滚动视图和 table 视图获取事件。
接下来,保留参考文献以确保您可以区分这两种观点。
最后,检查哪个引用触发了 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
}
}