关闭 NSWindow 后无响应的 UI 元素



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


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

我尝试了以下方法:

  • 取消选中IB中的"关闭时释放"以进行NSWindow
  • 从 NIB 重新加载NSWindow
  • 适用于所有NSControl的有力参考
  • NSControl上呼叫"成为第一响应者"
  • 重新加载所有育儿NSView
  • 实现所有代表连接每个NSControl(为NSControl工作,但工作量太大,无法用于每个人)
  • 禁用然后重新启用NSControl

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

我对这个问题的解决方案是子类NSWindow并覆盖以下方法:

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

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

相关内容

  • 没有找到相关文章

最新更新