1

関数を継承しNSSplitViewControllerてオーバーライドするクラスがありますsplitViewDidResizeSubviews

NSSplitViewItem内部で折りたたみを呼び出すとNSSplitViewController、目にNSSplitViewItem見えるサイズ変更が表示されますが、splitViewDidResizeSubviews関数は呼び出されません。

ウィンドウのサイズを変更すると、splitViewDidResizeSubviews関数が呼び出されるので、正しく実装されていることがわかります。

折りたたみ時に関数が呼び出されることを期待できますsplitViewDidResizeSubviewsか?もしそうなら、何が間違っているのでしょうか?

4

1 に答える 1

2

splitViewItem を折りたたんでも、実際のフレーム サイズは変更されず、アイテムの表示を切り替えるだけだからです。ステータスを切り替えるだけの場合、splitViewItem はフレーム サイズを保持しisCollapsedます。

(アイテムが外側に展開する場合は例外です。つまりsplitViewItem.collapseBehavior = .preferResizingSplitViewWithFixedSiblings、 。テストしたところ、 が呼び出されますsplitViewDidResizeSubviews。)

したがって、そのような使用法では、たとえば NSSplitViewController の別のメソッドをオーバーライドすることを好みます。

func splitView(_ splitView: NSSplitView, shouldCollapseSubview subview: NSView, forDoubleClickOnDividerAt dividerIndex: Int
于 2016-10-16T14:33:31.387 に答える