关闭NSWindow后无响应的UI元素

时间:2013-10-27 14:40:05

标签: macos nswindow nscontrol

上周我花了很多时间摆弄以下问题。我解决了它,但由于我在这里找不到答案,我想与任何遇到此问题的人分享我的解决方案。


问题:我的应用程序在后台运行(菜单栏),其主NSWindow包含我的应用程序的所有首选项。您可以点击左上角的关闭按钮关闭NSWindow。关闭NSWindow并重新打开后,所有NSControl都没有在视觉上做出响应。这些行动相应地起作用,但它们没有更新。

我尝试了以下内容:

  • 取消选中IB中的 “关闭时发布” NSWindow
  • 从NIB重新加载NSWindow
  • 所有NSControl s
  • 的强引用
  • NSControl上致电 “成为第一响应者”
  • 重新加载所有育儿NSView
  • 实现所有代表连接每个NSControl(为NSControl工作,但为每一个使用它的工作太多了)
  • 禁用然后重新启用NSControl s

我会在下面发布我的解决方案以供记录。

1 个答案:

答案 0 :(得分:0)

我对此问题的解决方案是继承NSWindow并覆盖以下方法:

- (void)performClose:(id)sender{
    [self orderOut:nil];
}

- (void)close{
    [self orderOut:nil];
}

现在NSWindow 隐藏 / 已订购,您只需在显示时重新订购。