我在 CollectionView 中有一个 PdfView。由于两者都有自己的滚动视图,我在滚动时有冲突。所以我想禁用 PdfView 的滚动。我该怎么做?
1672 次
2 回答
2
对于常规滚动视图,您可以通过将水平和垂直滚动设置为 false 值来删除滚动。因此,对于 PDF 视图,请尝试以下操作:
NSScrollView *enclosingScrollView = [myPdfView enclosingScrollView];
[enclosingScrollView setHasHorizontalScroller:NO];
[enclosingScrollView setHasVerticalScroller:NO];
于 2014-07-17T09:52:51.633 回答
2
我的解决方案有点粗糙,但确实有效。我只想在我的 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 的超级视图。
我还编写了一个获取第一个子滚动视图(封闭式 ScrollView)的方法,它确保PDFView在正确缩放时在水平轴上是实心的。
if let scrollView = pdfView.enclosedScrollView {
scrollView.usesPredominantAxisScrolling = true
scrollView.hasHorizontalScroller = false
scrollView.horizontalScrollElasticity = NSScrollView.Elasticity.none
}
于 2018-10-04T16:32:42.217 回答