ios - 如何检测 iOS ScrollView 何时位于最顶部?

标签 ios swift uiscrollview

如何检测用户何时滚动到我的 collectionView 的最顶部?

scrolling collection view

我尝试使用此代码:

func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
   if collectionView.contentOffset.y <= collectionView.contentSize.height - collectionView.frame.size.height {
       print("top")
   }
}

但即使我没有到达顶部,它也会打印“顶部”。

最佳答案

scrollViewDidEndDragging 表示用户的手指抬起,但由于它具有物理模拟惯性,因此 View 可能会继续移动。还有另一个委托(delegate)方法正是您正在寻找的:scrollViewDidScrollToTop顾名思义,当您到达 ScrollView 的顶部时会触发。

编辑: 您还可以尝试:

  func scrollViewDidScroll(_ scrollView: UIScrollView) {
    if scrollView.contentOffset.y <= 0 {
      print("top!")
    }
  }

编辑第三次有魅力吗?如果您位于顶部,则在 ScrollView 停止移动后,此事件只会触发一次。

  override func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
    if scrollView.contentOffset.y == 0 {
      print("top!")
    }
  }

关于ios - 如何检测 iOS ScrollView 何时位于最顶部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59366061/

相关文章:

ios - 如何在 swift 上禁用和启用自动旋转?

ios - AVAudioSession 总是返回相同的 outputVolume

ios - CGPathMoveToPoint 在创建路径时遇到一些麻烦

c++ - 在 iOS 项目中添加 C++ 库将无法正确编译

ios - Swift 框架访问级别

swift - 将反向地理编码的结果分配给全局变量

ios - 如何以编程方式创建带有动态选项卡的选项卡栏?底部黑屏问题

ios - Storyboard中带有 PageControl 的 ScrollView

ios - UITableView didSelect 委托(delegate)没有被调用?

ios - 使用单个 ViewController 在带有 Paging 的 UIScrollView 中添加多个 UICollectionView