swift - 垂直滚动 NSTableView Swift macOS 中的水平 NSCollectionView
问题描述
我创建了一个垂直滚动的 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
推荐阅读
- c# - 列表中的 C# Parallel.Foreach int[]
未正确更改 - python - 时间和空间复杂度在 Python 中洗牌时(不使用内置函数)
- angular - 无法读取未定义反应形式的属性
- centos7 - 如何确认 Centos 7 镜像
- java - Flowable:CMMN 建模器错误转换 CasePlanModel
- c# - 更新存储过程在实体框架中不起作用
- facebook - 从 LogicApp 到 Facebook 的 OAuthException - LogicApp 设计
- javascript - 为什么javascript函数返回未定义
- angular - 在 angular 和 openlayers 中,将地图点的名称设置为动态的
- javascript - 无法从函数中获取值