ios - 可以区分用户滚动和编程滚动吗?

标签 ios swift uiscrollview

我在 scrollViewDidScroll 上放置了一个滚动事件。 但是当用户滚动时, 它在使用 setContentOffSet 时也有效。 我想让它仅在用户滚动时起作用。

func scrollViewDidScroll(_ scrollView: UIScrollView) {
            if (self.lastContentOffset > scrollView.contentOffset.y) {
                let contentSize = scrollView.contentSize.height
                let tableSize = scrollView.frame.size.height - scrollView.contentInset.top - scrollView.contentInset.bottom
                let canLoadFromBottom = contentSize > tableSize
                // Offset
                let currentOffset = scrollView.contentOffset.y
                let maximumOffset = scrollView.contentSize.height - scrollView.frame.size.height
                let difference = maximumOffset - currentOffset
                if canLoadFromBottom, difference <= -85.0{
                    loadMore()
                }
            self.lastContentOffset = scrollView.contentOffset.y
    }

最佳答案

如果您在代码中滚动,之后您会立即收到一次委托(delegate)方法,因此很容易在代码滚动之前引发 Bool 标志并在委托(delegate)方法中检测到这一点。

关于ios - 可以区分用户滚动和编程滚动吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55699921/

相关文章:

swift - 在 swift 中表达具有动态范围的 for 循环

swift - 如何为弯曲的 SKNodes 引导 tvOS 焦点项目

iphone - 如何实际实现Apple示例中的分页UIScrollView?

ios - UiScrollview scrollviewDidScroll 检测用户触摸

iOS:在发生触摸时转移 UIView 的所有权?

android - PWA OAuth 登录

ios - 根据单元格不改变单元格高度动态地更改UICollectionView高度

ios - 仅在信息不存在时才将数据写入 firebase - Swift iOS

ios - 如何在 Appcelerator Titanium 中增加 iOS 内部版本号

ios - SKPaymentQueue.canMakePayments() 总是返回 true