2016-10-15 26 views
0

我有一个继承自NSSplitViewController的类并覆盖了splitViewDidResizeSubviews函数。Collapsing NSSplitViewItem不调用splitViewDidResizeSubviews

当我调用NSSplitViewController内的NSSplitViewItem崩溃时,我看到NSSplitViewItem明显调整大小splitViewDidResizeSubviews函数未被调用。

如果我调整窗口大小的splitViewDidResizeSubviews函数被调用,所以我知道这是正确实施。

我能期待splitViewDidResizeSubviews函数在崩溃时被调用吗?如果是的话,我会做什么错误?

回答

1

由于折叠splitViewItem不调整其实际框架大小,但只是切换项目的可见性。如果您只切换isCollapsed状态,splitViewItem将保留帧大小。

(一个例外是当项目向外扩展即splitViewItem.collapseBehavior = .preferResizingSplitViewWithFixedSiblings正如我测试时,它调用splitViewDidResizeSubviews。)

所以对于这种用法我宁愿覆盖例如NSSplitViewController的另一种方法:

func splitView(_ splitView: NSSplitView, shouldCollapseSubview subview: NSView, forDoubleClickOnDividerAt dividerIndex: Int 
+0

不幸的是'shouldCollapseSubview'不符合我通知我的要求,也没有在'NSSplitViewController'中做任何其他方法,所以我只是添加更多的逻辑按钮,调用崩溃和扩大,并包含一个事务,所以我知道然后动画师完成。 – zode64