关闭 NSWindow 后无响应的 UI 元素
Posted
技术标签:
【中文标题】关闭 NSWindow 后无响应的 UI 元素【英文标题】:Unresponsive UI Elements after closing NSWindow 【发布时间】:2013-10-27 14:40:05 【问题描述】:上周我花了很多时间来解决以下问题。我解决了它,但由于我在这里找不到答案,所以我想与遇到此问题的任何人分享我的解决方案。
问题:我的应用程序在后台运行(菜单栏),其主NSWindow
包含我的应用程序的所有首选项。您可以通过单击左上角的关闭按钮来关闭NSWindow
。关闭NSWindow
并重新打开它后,所有NSControl
s 都没有视觉响应。这些操作相应地起作用,但它们没有更新。
我尝试了以下方法:
在 IB 中为NSWindow
取消选中 "Release on close"
从 NIB 重新加载 NSWindow
所有NSControl
s 的强大参考
在NSControl
s 上调用“成为第一响应者”
重新加载所有育儿NSView
s
实现所有代表连接每个 NSControl
(曾为 NSControl
工作,但每个人都使用它的工作量太大)
禁用然后重新启用NSControl
s
我将在下面发布我的解决方案以供记录。
【问题讨论】:
【参考方案1】:我对这个问题的解决方案是继承NSWindow
并覆盖以下方法:
- (void)performClose:(id)sender
[self orderOut:nil];
- (void)close
[self orderOut:nil];
现在NSWindow
已隐藏 / 订购了,您只需在显示时重新订购即可。
【讨论】:
以上是关于关闭 NSWindow 后无响应的 UI 元素的主要内容,如果未能解决你的问题,请参考以下文章
startActivityForResult调用后立即响应了OnActivityResult()方法,导致setResult()后无响应