objective-c - 在 NSCollectionView 中禁用 PDFView 的滚动

标签 objective-c cocoa nsscrollview nscollectionview pdfview

我在 CollectionView 中有一个 PdfView。由于两者都有自己的 ScrollView ,因此我在滚动时会发生冲突。所以我想禁用 PdfView 的滚动。我该怎么做?

最佳答案

我的解决方案有点粗糙,但确实有效。 我只想停止在我的 PDFView 上水平滚动 - 我的收藏 View 水平滚动。

我制作了一个 View ,它有选择地过滤掉滚动鼠标事件并将其放在 PFD View 上。

class HorizontalScrollBlockerView: NSView
{
    var scrollNextResponder: NSResponder?

    override func scrollWheel(with event: NSEvent) {
        guard scrollNextResponder != nil else {
            return
        }

        if fabs(event.deltaX) >= fabs(event.deltaY) {
            scrollNextResponder!.scrollWheel(with: event)
        } else {
            super.scrollWheel(with: event)
        }
    }
}

我将 View 的“scrollNextResponder”设置为 PDFView 的 superView。

我还编写了一个获取第一个子 ScrollView (包含edScrollView)的方法,它确保 PDFView 在正确缩放时在水平轴上是实心的。

if let scrollView = pdfView.enclosedScrollView {
    scrollView.usesPredominantAxisScrolling = true
    scrollView.hasHorizontalScroller = false
    scrollView.horizontalScrollElasticity = NSScrollView.Elasticity.none
}

关于objective-c - 在 NSCollectionView 中禁用 PDFView 的滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24797357/

相关文章:

ios - 如何调用委托(delegate)方法

ios - 使用 segue 传递 tableviewcell 数据?

cocoa - 如何在 Cocoa 中访问大型 NSDictionary 的特定子集?

objective-c - NSScrollview 与 NSGradient

cocoa - 如何禁用 NSScrollView 的水平滚动?

objective-c - iOS Blocks - 定义类似 UIView 动画的 block

objective-c - 以编程方式更改选项卡栏

ios - 使用 Core Data 进行排序的 fetchRequest 有哪些限制?

iphone - 401 未经授权在 iPhone 上使用带有 twitter 的 oauth

swift - NSScrollView 内的 NSTextView 在滚动时不合作