NSSplitView:自定义双击处理程序

NSSplitView: custom double click handler

我正在尝试了解如何检测对 NSSplitView 分隔线的双击。在我看来,分频器既没有暴露给 NSSplitViewDelegate,也没有暴露给 NSSplitViewController。

到目前为止,我发现分隔线是 NSSplitDividerView 的一个实例,它是私有的 class,因此不能扩展或子class 它。

能否让我回到正确的调查轨道?

谢谢。

我很确定您可以在拆分视图的委托对象 return false 中实现 optional func splitView(_ splitView: NSSplitView, shouldCollapseSubview subview: NSView, forDoubleClickOnDividerAt dividerIndex: Int) -> Bool 方法,然后实现您想要的任何自定义操作。

一个可能的解决方案是继承 NSSplitView 并覆盖 mouseDown(with:)。检查事件的位置是否在子视图之间。

override func mouseDown(with event: NSEvent) {
    if event.clickCount == 2 {
        let location = self.convert(event.locationInWindow, from: nil)
        if location.x > NSMaxX(self.arrangedSubviews[0].frame) && location.x < NSMinX(self.arrangedSubviews[1].frame) {
            Swift.print("doubleclick")
            return
        }
    }
    super.mouseDown(with: event)
}