我在 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/