【发布时间】:2012-03-10 02:53:03
【问题描述】:
我正在实现一个子无边框搜索结果窗口,它浮动在 NSSearchField 下,并在用户键入时显示搜索结果。 NSWindow 不需要是键,因为 NSSearchField 将适当的命令(向上箭头、向下箭头、回车键)转发到窗口中的自定义搜索结果视图,让用户在搜索期间随时浏览结果。除了一个用例之外,这一切都很好:我想在用户单击应用程序中的其他任何地方时轻松关闭窗口。
我通常会在windowDidResignKey 通知中执行此操作,但在这种情况下不会发送此消息,因为窗口永远不是关键。有没有其他方法可以轻松处理这种情况?
--使用解决方案编辑--
使用下面 Rob 想法的变体,我简单地实现了controlTextDidEndEditing:,这是 NSSearchField 的一个委托方法,当搜索字段失去焦点时(以及其他时间)调用该方法。如果搜索字段不是我的主父窗口的第一响应者,我将关闭搜索结果窗口。
【问题讨论】:
-
这比我的答案更好,因为它不需要子类化。