检测何时启用NSWindow的“显示选项卡栏”

时间:2019-04-20 16:32:20

标签: nswindow tabbed-interface

我有一个限高的窗口:它不能增长到某个高度以上(基于其当前内容),但是可以变小(在这种情况下,我将添加一个垂直滚动条)。

我使用NSLayoutConstraint限制最大高度。

现在,如果用户通过检查菜单命令View-> Show Tab Bar启用选项卡式窗口,则窗口的内容将下移,以便为选项卡栏腾出空间,但整个窗口的高度仍保持不变相同,这实际上导致内容被“压缩”,因此我当前的代码决定添加垂直滚动条,就像用户只是手动减小窗口高度一样。

我宁愿窗口随栏标签一起增长。我该怎么做?

似乎没有事件或通知会在启用标签栏时通知我。

那么有什么干净的方法可以检测到选项卡栏的激活,以便我可以同时增加窗口高度?

1 个答案:

答案 0 :(得分:0)

我与KVO闲逛,发现可以为此目的观察NSWindow的{​​{1}}属性(在10.13.6上进行了测试)。

在ViewController的tabbedWindows中:

viewWillAppear

然后处理更改:

if ([self.view.window respondsToSelector:@selector(tabbedWindows)]) {
    [self.view.window addObserver:self forKeyPath:@"tabbedWindows" options:0 context:nil];
}

但是,这可能并不可靠,也就是说,我找不到任何文档来保证这种方法将来会奏效,而不仅仅是偶然的副作用。