gpt4 book ai didi

cocoa - 在 Cocoa 应用程序中拖放期间未调用 NSView keyDown

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

我有一个 cocoa 应用程序,我需要在拖动 session 期间响应 keyDown 事件,以便触发其他事情。这些键不仅仅是修饰符,还可以是任何类型的键。

问题是,当我通过调用 NSWindow.dragImage 启动拖动 session 时,在拖动操作期间我没有收到 keyDown 事件。当我将外部资源拖动到应用程序窗口(例如 Finder 中的文件)时,它工作正常, NSView.keyDown 被调用。

有什么办法可以解决这个问题吗?谢谢你!

最佳答案

这可能是因为拖动 session 使用“鼠标跟踪循环”来处理拖动事件。这有效地阻止了除拖动事件之外的所有其他事件发送到其目标。您可以在event documentation中阅读有关此内容的内容。 .

将项目拖动到应用程序上不会执行此操作的原因是,只有启动拖动 session 的应用程序被事件阻止,而不是接收拖放的应用程序。

话虽如此,您可以尝试使用 nextEventMatchingMask:untilDate:inMode:dequeue:mouseDragged 事件期间捕获 keyEvents,这应该允许您弹出任何事件队列中可能存在的关键事件。

还在上面链接的文档中,他们讨论了在鼠标拖动操作期间处理按键事件。但是,这些示例并不特别适合使用 dragImage:at:offset:event:pasteboard:source:slideBack: 启动拖动 session ,但您可以尝试将 performKeyEquivalent 观看为他们提到甚至查看 NSWindow 的 sendEvent: 是否在拖动 session 期间接收事件。

关于cocoa - 在 Cocoa 应用程序中拖放期间未调用 NSView keyDown,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16736103/

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