NSMENUITEM不用WKWebView接收keyequivalentModifiermask控件
nsapplication.mainmenu
带有2 nsmenuitem
和以下key equivalent
:
- ⌃ (控件选项卡)
keyEquivalent = String(utf16CodeUnits: [unichar(NSTabCharacter)]
keyEquivalentModifierMask = NSEvent.ModifierFlags.control
- ⌃ >(控制移位选项卡)
keyEquivalent = String(utf16CodeUnits: [unichar(NSTabCharacter)]
keyEquivalentModifierMask = [NSEvent.ModifierFlags.control, NSEvent.ModifierFlags.shift]
他们与任何nsview
一起工作,除了wkwebview
和任何其他key equivalent
组合工作。
显然,菜单项未接收事件,因为即使密钥同等标准不进行直接单击该项目也可以按预期工作。
如何使其工作?
NSApplication.mainMenu
with 2 NSMenuItem
and the following keyEquivalent
:
- ⌃ ⇥ (Control Tab)
keyEquivalent = String(utf16CodeUnits: [unichar(NSTabCharacter)]
keyEquivalentModifierMask = NSEvent.ModifierFlags.control
- ⌃ ⇧ ⇥ (Control Shift Tab)
keyEquivalent = String(utf16CodeUnits: [unichar(NSTabCharacter)]
keyEquivalentModifierMask = [NSEvent.ModifierFlags.control, NSEvent.ModifierFlags.shift]
They work as expected with any NSView
except with a WKWebView
and any other keyEquivalent
combination work.
Apparently the menu item is not receiving the event, as clicking directly on the item works as expected too, even if the key equivalent didn't.
How to make it work?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
看起来像
wkwebview
intercepts和
> ⌃⇥
而无需将它们传递给nsreponder
链,就像它一样其他一些命令。这些命令使用
nswindow
的选择器:⌃ ⌃
: selectnexkeyview(_ :): selectPreviousKeyview(_ :)
解决方案是子类
wkwebview
并实现这些选择器。例子:
Seems like
WKWebView
intercepts⌃ ⇥
and⌃ ⇧ ⇥
without passing them down theNSReponder
chain, like it does with some other commands.These commands use the selectors from
NSWindow
:⌃ ⇥
: selectNextKeyView(_:)⌃ ⇧ ⇥
: selectPreviousKeyView(_:)The solution is to subclass
WKWebView
and implement those selectors.Example: