通常,按下 option 键关闭窗口会关闭应用程序中的所有窗口。在我的应用程序中,我希望它仅关闭与用户正在关闭的窗口相关的窗口。我怎样才能做到这一点?我可以为所有窗口实现 windowShouldClose,但是我如何知道用户单击了哪个窗口?
最佳答案
您可以查看在正在处理的事件中是否按住了选项键:
([[NSApp currentEvent] modifierFlags] & NSAlternateKeyMask)!=0
如果这是响应用户单击窗口的关闭按钮,那么您可以像这样找到被单击的窗口:[[NSApp currentEvent] window]
我想你还应该检查 [NSApp currentEvent]
是鼠标事件等,但似乎这种测试组合应该可以为您提供所需的信息。
另一方面,如果用户在按住选项键的情况下从"file"菜单中选择“关闭窗口”命令,则可以覆盖 performClose:
方法来自NSWindow
s 默认实现为您自己的,您可以在其中执行 currentEvent
在调用 [super performClose: sender]
之前测试上述内容
关于macos - 拦截选项-关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18938105/