我在CollectionView中有一个PdfView。由于两者都有自己的滚动视图,因此滚动时会出现冲突。所以我想禁用PdfView的滚动。我该怎么办?
答案 0 :(得分:2)
对于常规滚动视图,您可以通过设置水平和放大来删除滚动。垂直滚动到false值。因此,对于PDF视图,请尝试以下方法:
NSScrollView *enclosingScrollView = [myPdfView enclosingScrollView];
[enclosingScrollView setHasHorizontalScroller:NO];
[enclosingScrollView setHasVerticalScroller:NO];
答案 1 :(得分:0)
我的解决方案有点粗糙,但确实可以。 我只想停止在PDFViews上水平滚动-我的收藏夹视图水平滚动。
我创建了一个视图,该视图有选择地过滤掉滚动鼠标事件并将其放在PFD视图上。
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)
}
}
}
我将视图的“ scrollNextResponder”设置为PDFView的超级视图。
我还写了一个方法,该方法获取第一个子滚动视图(enclos ed ScrollView),该方法可确保在正确缩放比例时PDFView在水平轴上是稳定的。
if let scrollView = pdfView.enclosedScrollView {
scrollView.usesPredominantAxisScrolling = true
scrollView.hasHorizontalScroller = false
scrollView.horizontalScrollElasticity = NSScrollView.Elasticity.none
}