gpt4 book ai didi

macos - 如何在 NSWindow 中捕获转义键?

转载 作者:行者123 更新时间:2023-12-03 16:40:21 27 4
gpt4 key购买 nike

我有一个带有 NSWindowController ( Storyboard入口点)的 Storyboard,其内容是 NSViewController。当用户在我的应用程序中选择一个菜单项时,我会加载 Storyboard并显示它。

现在我想要“退出”键来关闭窗口。我已经看到了几个与此相关的问题,但没有一个与我所看到的行为相符。

我对 NSWindowController 和 NSViewController 进行了子类化,并将 Storyboard 中的 Controller 设置为这些 Controller 。我试过every method I could find或想到的,包括:

  • 覆盖 func cancelOperation(_ sender: Any?)
  • func cancel(_发件人:有吗?)
  • 覆盖 func keyDown(with event: NSEvent)

在窗口 Controller 、 View Controller 、甚至自定义 NSWindow 子类中,但这些方法都没有被调用。我已经确认 viewDidLoad()windowDidLoad() 确实被调用,所以我的类正在被使用。他们只是没有收到事件。

为了验证我的理智,我尝试了 inspecting the responder chainAs expected ,我的自定义窗口 Controller 和 View Controller 类都在其中,NSWindow 子类也是如此。

为什么响应者链中的 NSResponder 对象不会接收事件?

最佳答案

// monitor ESC key
NSEvent* (^handler)(NSEvent*) = ^(NSEvent *event) {
if(event.keyCode == 53) {
[self keyDown:event];
}
return event;
};
eventMonitor = [NSEvent addLocalMonitorForEventsMatchingMask:NSKeyDownMask handler:handler];

将这些代码放入 NSWindowController 或 AppDelegate 类中。

关于macos - 如何在 NSWindow 中捕获转义键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42593204/

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