【问题标题】:How to disbale scrolling in nscollectionview using swift on some specific condition如何在某些特定条件下使用 swift 在 collectionview 中禁用滚动
【发布时间】:2019-02-25 15:25:16
【问题描述】:

我有一个 NSCollectionView 并且必须禁用它的 scrollview 滚动属性,这样它就不会在某些特定条件下重新加载,并在用户尝试滚动时向用户显示警报。

在视图滚动时调用的任何可以限制集合视图数据的滚动和重新加载的委托方法都会有所帮助。

提前致谢。

【问题讨论】:

    标签: swift macos cocoa nsscrollview nscollectionview


    【解决方案1】:

    继承 NSCollectionView 并覆盖 scrollWheel

    import Cocoa
    
    class YourCollectionView: NSCollectionView {
        var disableScroll = true
    
        override func scrollWheel(with event: NSEvent) {
            if disableScroll {
                return
            } else {
                super.scrollWheel(with: event)
            }
        }
    }
    
    

    【讨论】:

      【解决方案2】:

      你可以借助ScrollViewDelegate的scrollViewDidScroll方法来做。你可以使用这个方法,因为collectionview是scrollview的子类。

      例如:

      func scrollViewDidScroll(_ scrollView: UIScrollView) {
              print("collectionView Content : \(collectionView.contentOffset.y)")
      
                  if collectionView.contentOffset.y >= 100
                  {
                      collectionView.isScrollEnabled = false
                  }
                  else
                  {
                      collectionView.isScrollEnabled = true
                  }
      
          }
      

      我希望它对你有用。

      【讨论】:

      • NSCollectionViewNSView 的子类。
      • @yash scrollviewdidscroll 方法似乎只适用于 ios,因为我没有为 os x 中的 NSScrollview 获取它。
      猜你喜欢
      • 2016-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-03
      相关资源
      最近更新 更多