我创建了一个垂直滚动的 NSTableView。这个表格视图的每个单元格都包含一个标题,下面是一个水平滚动的 NSCollectionView。当滚动时光标位于标题上时,垂直表格视图滚动正常,但当光标位于水平滚动集合视图上时,表格视图不会滚动。
即使光标在集合视图上,如何让表格视图滚动?我了解 tableview 和 scrollview 使用两个单独的滚动视图,但我不知道是否有办法同步这两个。
好的,感谢上帝,毕竟我在 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