gpt4 book ai didi

cocoa - 如何轻松关闭非关键的 NSWindow?

转载 作者:行者123 更新时间:2023-12-03 17:14:55 25 4
gpt4 key购买 nike

我正在实现一个子无边框搜索结果窗口,该窗口 float 在 NSSearchField 下,并在用户键入时显示搜索结果。 NSWindow 不需要是键,因为 NSSearchField 将适当的命令(向上箭头、向下箭头、输入键)转发到窗口中的自定义搜索结果 View ,该 View 让用户在搜索过程中随时浏览结果。除了一个用例之外,这一切都很好:我想在用户单击应用程序中的其他任何位置时轻松关闭窗口。

我通常会在 windowDidResignKey 通知中执行此操作,但在这种情况下不会发送此通知,因为窗口从来都不是关键。有没有其他方法可以轻松处理这种情况?

--使用解决方案进行编辑--

使用下面 Rob 想法的变体,我简单地实现了 controlTextDidEndEditing:,它是 NSSearchField 的委托(delegate)方法,当搜索字段失去焦点时(以及其他时候)会调用该方法。如果搜索字段不是我的主父窗口的第一响应者,我将关闭搜索结果窗口。

最佳答案

您可以子类化 NSWindow 并重写 makeFirstResponder: ,以便只要第一响应者发生更改,结果窗口就会关闭(如果它是打开的)。当您的搜索字段处于事件状态时,第一响应者不应更改,因此只有在搜索字段的字段编辑器失去焦点时才应关闭窗口。

关于cocoa - 如何轻松关闭非关键的 NSWindow?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9643544/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com