UIScrollViewDelegate 中的委托方法不响应 table 视图滚动事件
Delegate methods in UIScrollViewDelegate don't respond to table view scrolling event
我正在尝试拉动刷新和无限滚动到 table 视图而不需要外部库
我正确设置了委托:
tableView.delegate = self
但是在 table 视图中滚动时,滚动方法不响应滚动操作,例如:
func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
if scrollView == self.tableView {
let currentOffset: Float = Float(scrollView.contentOffset.y)
if currentOffset < 25 {
//refresh content
}
let offsetY = tableView.contentOffset.y
let contentHeight = tableView.contentSize.height
if offsetY > contentHeight - scrollView.frame.size.height + 25 {
// load more
}
}
}
这种情况发生在我将方案构建配置更改为“发布”时,但当返回“调试”时它工作正常。
我的部署目标是:11.0,和XCode版本 10.2 (10E125)
经过大量搜索后,可能是 Swift 5 编译器问题(我发现那里报告了一个类似的错误):
解决方法是在每个方法中添加@objc:
@objc func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
if scrollView == self.tableView {
let currentOffset: Float = Float(scrollView.contentOffset.y)
if currentOffset < 25 {
//refresh content
}
let offsetY = tableView.contentOffset.y
let contentHeight = tableView.contentSize.height
if offsetY > contentHeight - scrollView.frame.size.height + 25 {
// load more
}
}
}
我正在尝试拉动刷新和无限滚动到 table 视图而不需要外部库
我正确设置了委托:
tableView.delegate = self
但是在 table 视图中滚动时,滚动方法不响应滚动操作,例如:
func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
if scrollView == self.tableView {
let currentOffset: Float = Float(scrollView.contentOffset.y)
if currentOffset < 25 {
//refresh content
}
let offsetY = tableView.contentOffset.y
let contentHeight = tableView.contentSize.height
if offsetY > contentHeight - scrollView.frame.size.height + 25 {
// load more
}
}
}
这种情况发生在我将方案构建配置更改为“发布”时,但当返回“调试”时它工作正常。
我的部署目标是:11.0,和XCode版本 10.2 (10E125)
经过大量搜索后,可能是 Swift 5 编译器问题(我发现那里报告了一个类似的错误):
解决方法是在每个方法中添加@objc:
@objc func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
if scrollView == self.tableView {
let currentOffset: Float = Float(scrollView.contentOffset.y)
if currentOffset < 25 {
//refresh content
}
let offsetY = tableView.contentOffset.y
let contentHeight = tableView.contentSize.height
if offsetY > contentHeight - scrollView.frame.size.height + 25 {
// load more
}
}
}