macos - 拦截选项-关闭

标签 macos cocoa

通常,按下 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/

相关文章:

macos - xcode 4 上的语义警告

image - WebView 到 TIFF 表示

iphone - NSSetUncaughtExceptionHandler 被第三方 SDK 劫持

c - 使用 scanf 的简单缓冲区溢出(Mac OS X 10.6.5 64 位)

c++ - 如何获得正在监听的端口列表及其各自的应用程序名称

objective-c - 使用应用程序沙箱的 Cocoa 应用程序中的 NSOpenPanel 给出错误

objective-c - Cocoa/Objc - 日期格式更改

objective-c - 如何通过 Mac 应用程序以编程方式聚焦桌面/Finder?

macos - 我如何使用 bash 和 xmllint 解析 adobe xml swidtag

macos - macOS 上的/dev/tty.* 和/dev/cu.* 有什么区别?