我在NSMenu
下面有一个NSStatusItem
。我也有一个NSSpeechRecognizer
。当NSMenu
打开时,语音识别器无法正常工作。在我关闭菜单之前,它会不断显示它正在接收声音。即使菜单打开,我也需要它来正确检测声音。
即使菜单打开,如何让语音识别器检测到声音?它是否需要成为“第一响应者”并优先于菜单?
我尝试设置[speechRecognizer setListensInForegroundOnly: NO]
,而仍然无效。
如果您不理解,我非常乐意提供澄清。
以下是一些similar situations,但我还不完全明白。
答案 0 :(得分:2)
问题很可能是菜单运行模态运行循环只要它是打开的(为了跟踪鼠标等...)这就阻碍了NSSpeechRecognizer
的能力正常运作。
您可以通过调出菜单然后暂停调试器来确认。你可能会看到两个运行循环;正在运行模态循环的堆栈中的外部,正常,一个和一个更深。
一般来说,从用户交互的角度来看,这是一件奇怪的事情。弹出菜单的重点是为用户提供一些命令,这些命令将在选择相应的菜单项后完成。
如果你真的需要“点击这个东西并识别语音”,我会推荐一个按钮,可能会弹出一些用户界面,然后在不使用菜单的情况下与语音识别器进行交互?