上周我花了很多时间摆弄以下问题。我解决了它,但由于我在这里找不到答案,我想为任何遇到这个问题的人分享我的解决方案。
问题:我的应用程序在后台(菜单栏)中运行,其主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
被隐藏/订购,您只需要在显示它时重新订购它。