垂直滚动NSTableView Swift macOS中的水平NSCollectionView

时间:2018-08-15 19:33:35

标签: swift macos

我创建了一个垂直滚动的NSTableView。该表视图的每个单元格都包含一个标题,并且在其下方是一个水平滚动的NSCollectionView。当光标在滚动时位于标题上时,垂直表视图滚动良好,但是当光标在水平滚动的集合视图上时,表视图不滚动。

即使光标位于集合视图上,如何使表视图滚动?我知道tableview和scrollview使用两个单独的滚动视图,但是我不知道是否有一种方法可以同步这两个视图。

1 个答案:

答案 0 :(得分:1)

好,谢谢上帝,我毕竟在这里找到了关于stackoverflow的解决方案。它在Objective-C中,所以我将其翻译为Swift。这是给任何遇到类似问题的人的

class MTHorizontalScrollView: NSScrollView {

var currentScrollIsHorizontal = false

override func draw(_ dirtyRect: NSRect) {
    super.draw(dirtyRect)
}

override func scrollWheel(with event: NSEvent) {
    if event.phase == NSEvent.Phase.began || (event.phase == NSEvent.Phase.ended && event.momentumPhase == NSEvent.Phase.ended) {
        currentScrollIsHorizontal = fabs(event.scrollingDeltaX) > fabs(event.scrollingDeltaY)
    }
    if currentScrollIsHorizontal {
        super.scrollWheel(with: event)
    } else {
        self.nextResponder?.scrollWheel(with: event)
    }
}

}

全额归功于SO LINK