我有一个NSMenu
,其中包含NSMenuItems
自定义视图。我需要它,以便在按下alt按钮时,菜单项会改变其外观的一部分(通过它们的视图)。我在NSMenuItem
文档中找到了setAlternative
,但是,实际上我只能在没有自定义视图的情况下使用NSMenuItems
。只要我设置了一个自定义视图,所有的菜单项就会显示出来。 另外,我尝试在菜单打开时获得按键事件。由于另一个运行循环,NSApplication's sendEvent:
直到菜单关闭后才会收到事件。因此,我不能只是拦截事件进来。NSMenu中的替代菜单项
有谁知道我可以通过代理或子类通知何时按Alt键打开菜单时通知我吗?
我需要它当菜单打开发生。就像,不是当菜单打开时,而是在打开时,如果用户用alt键关闭,那么我需要通知它。 – 2010-04-10 19:21:31
我已经更新了有关'-flagsChanged'方法的信息。 – 2010-04-11 01:23:42
我覆盖 - (BOOL)acceptedFirstResponder和 - (BOOL)becomeFirstResponder在我的NSMenuItem的自定义视图类中返回YES。然后我实现了flagsChanged :. menuNeedsUpdate时,我做了第一个菜单项的视图第一响应者:但是,flagsChanged:仍然没有被调用。我也尝试让它在0.5延迟之后成为响应者(在跟踪事件循环模式下),以防万一菜单偷回来。那也行不通。有任何想法吗? – 2010-04-11 12:51:14