有没有办法让我的应用程序的窗口接收键盘和/或鼠标事件(即用户点击窗口的按钮),同时仍然保持焦点到另一个不相关的应用程序?保持另一个应用程序的窗口处于活动状态,同时仍从另一个应用程序的窗口接收鼠标事件?
我试过配置我的窗口在不同的级别,包括[myWindow setLevel:NSPopUpMenuWindowLevel]无济于事。
有没有办法让我的应用程序的窗口接收键盘和/或鼠标事件(即用户点击窗口的按钮),同时仍然保持焦点到另一个不相关的应用程序?保持另一个应用程序的窗口处于活动状态,同时仍从另一个应用程序的窗口接收鼠标事件?
我试过配置我的窗口在不同的级别,包括[myWindow setLevel:NSPopUpMenuWindowLevel]无济于事。
找到它。简单但难以捉摸。
使用NSPanel并确保面板样式为非激活(NSNonactivatingPanelMask)或在IB的检查器中勾选相同的选项。
你应该能够处理的鼠标点击,而不通过发送NSApp
a preventWindowOrdering
message,然后再返回YES
让您的观点(至少处理鼠标点击的那些),以应对acceptsFirstMouse:
messages订购您的窗口前。
你不应该让你的应用程序处理输入而不自己排序。如果出现的字段被另一个窗口遮挡,用户可能不会意识到他们的输入正在进行的位置。
感谢您的提示,但它仍然没有按照我希望的方式工作。对于我的窗口类,我重写了canBecomeKeyWindow(返回NO),makeKeyWindow(什么也不做),accepFirstResponder(返回NO)和canBecomeMainWindow(什么也不做)。 我也定义为你建议我自己的NSButton类来覆盖accepFirstMessage: 基本上,我需要我的窗口弹出并让用户点击它的按钮,而前一个应用程序(比如说iTunes)仍然处于活动状态和菜单栏主动/焦点。 – hishamk 2010-03-20 11:47:54