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