【发布时间】:2015-11-05 06:48:19
【问题描述】:
我正在创建一个搜索字段,它会打开一个类似于 Finder 和 Mail 的 NSMenu
唯一让我抓狂的问题是,一旦打开菜单,我就无法拦截关键事件
我什至对 NSApplication sendEvent 进行了子类化,但惊讶地发现,在菜单期间,没有调用 Applications sendAction:
我继承了 performKeyEquivalent: NSMenu 但它没有被调用
- (BOOL)performKeyEquivalent:(NSEvent *)theEvent
- 我正在监听 menuHasKeyEquivalent 上的委托调用:但它没有被调用
- (BOOL)menuHasKeyEquivalent:(NSMenu*)menu forEvent:(NSEvent*)event target:(id*)target action:(SEL*)action
NSMenu期间如何拦截键盘输入
【问题讨论】:
-
KeyEquivalent 用于不拦截所有键的菜单快捷方式,仅适用于应用程序的菜单栏。我相信制作自定义窗口而不是 NSMenu 会是更好的方法。也看看这个问题:stackoverflow.com/questions/6070492/…
-
彼得,您能与我们分享您的解决方案吗?
-
我没有使用 NSMenu,因为我发现这种方法存在一些问题......现在我没有时间将它变成可以共享的可重用代码,也许我会回来使用它
标签: macos cocoa nstextfield nsmenu