iOS - scrollViewDidEndDecelerating 为 scrollView 和 collectionView 运行

标签 ios objective-c swift scrollview collectionview

我有一个包含 collectionViewscrollView 的 VC。我把这段代码通过在 scrollView 中滚动来更改 pageController 的当前页面:

func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {

    let pageNumber = round(scrollView.contentOffset.x / scrollView.frame.size.width)
    self.pageController.currentPage = Int(pageNumber)
}

它适用于 scrollView 但问题是,当我什至在 collectionView 中滚动时,它会声明并导致 pageController 发生不必要的更改!

我该怎么办?

最佳答案

除了上面发布的答案之外,您还可以使用 View 的标签属性。

只需在 xib 中或通过代码为您的 ScrollView 分配一个标签(Int)。

yourScrollView.tag = 10

然后在 ScrollView 委托(delegate)方法中检查此标记:

func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {

    if scrollView.tag == 10 { 
      ///Your scrollview was scrolled
    } else {
      // Collection view was scrolled
    }

}

关于iOS - scrollViewDidEndDecelerating 为 scrollView 和 collectionView 运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44455450/

相关文章:

ios - 如何为 Uitextfield 设置最小和最大限制?

ios - 按工作日名称swift3对字典数组进行排序

ios - 从旁边点击 TabBarButtonNavController REFrostedViewController

objective-c - Swift如何加载一个类

SwiftUI 自定义列表样式

ios - Xcode - 无法通过 Pod 安装库

ios - 由于 "GCKConnectionSuspendReasonNetworkNotReachable",Cast session 暂停

objective-c - 如何在 iPad 应用程序中使用 FMDB 作为框架?

ios - 使用 AVAudioPlayer 播放音频

swift - 如何在 Swift 中创建一个不可变的结构实例数组作为实例变量?