未调用 scrollViewDidEndScrollingAnimation

use*_*157 3 uitableview uiscrollviewdelegate ios swift

我正在尝试在滚动动画完成后调用一个方法。我有一个表视图,我self.tableView.delegate = self根据this在 viewDidLoad 中设置了委托,但这没有帮助。

基本上,如果单击按钮,它会向上滚动到特定单元格,如果开始单元格不可见,则在表格视图中将其称为起始单元格。我正在使用 scrollToRow 方法进行滚动和动画

tableViewController.tableView.scrollToRow(at: IndexPath(row: techniqueNo, section: 0), at: UITableViewScrollPosition.top, animated: true)
Run Code Online (Sandbox Code Playgroud)

滚动动画完成后,我想向开始单元格添加动画。我尝试从滚动视图委托添加此方法,但它没有被调用

func scrollViewDidEndScrollingAnimation(scrollView: UIScrollView) {
    print("animation Complete")
}
Run Code Online (Sandbox Code Playgroud)

知道为什么没有调用此方法吗?

注意:这与完成滚动的 UITableView不同,因为 (1) 这是 swift 并且答案是 Objective-C,并且 (2) 我已经尝试从委托中实现该方法以检查动画是否完成,但它没有被调用我需要帮助找出原因

Don*_*Mag 7

这是你需要的吗?

将这些功能添加到您的表视图控制器...

编辑:忘了包括scrollViewDidEndScrollingAnimation...

override func scrollViewDidEndScrollingAnimation(_ scrollView: UIScrollView) {
    scrollingFinish()
}

override func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
    scrollingFinish()
}

override func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
    if !decelerate {
        scrollingFinish()
    }
}

func scrollingFinish() -> Void {
    print("Scroll Finished!")
}
Run Code Online (Sandbox Code Playgroud)