我创建了一个垂直滚动的NSTableView。该表视图的每个单元格都包含一个标题,并且在其下方是一个水平滚动的NSCollectionView。当光标在滚动时位于标题上时,垂直表视图滚动良好,但是当光标在水平滚动的集合视图上时,表视图不滚动。
即使光标位于集合视图上,如何使表视图滚动?我知道tableview和scrollview使用两个单独的滚动视图,但是我不知道是否有一种方法可以同步这两个视图。
答案 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