1

我有一个NSMenu下一个NSStatusItem。我也有一个NSSpeechRecognizer。打开时NSMenu,语音识别器无法正常工作。它会不断显示它正在接收声音,直到我关闭菜单。即使菜单打开,我也需要它来正确检测声音。

即使菜单打开,如何让语音识别器检测声音?它是否需要成为“第一响应者”并优先于菜单?

我试过设置[speechRecognizer setListensInForegroundOnly: NO]还是不行。

如果您不明白,我很乐意提供澄清。

这里有一些类似的 情况,但我还没有完全理解。

4

1 回答 1

2

问题很可能是菜单正在运行模式运行循环,只要它处于打开状态(用于跟踪鼠标等......),这会阻止NSSpeechRecognizer' 正常运行的能力。

您可以通过调出菜单然后暂停进入调试器来确认这一点。你可能会看到两个运行循环;运行模态循环的堆栈的外部,正常,一个和一个更深。

一般来说,从用户交互的角度来看,这是一件奇怪的事情。弹出菜单的全部意义在于向用户提供一些命令,这些命令将在选择相应的菜单项后执行。

如果你真的需要“点击这个东西并识别声音”,我会推荐一个按钮,它可能会弹出一些 UI,然后在不使用菜单的情况下与语音识别器交互?

于 2012-11-04T03:00:09.550 回答