默认情况下,可可应用程序中的模态窗口不在焦点上
Posted
技术标签:
【中文标题】默认情况下,可可应用程序中的模态窗口不在焦点上【英文标题】:Modal window not in focus by default in cocoa application 【发布时间】:2013-07-17 21:55:53 【问题描述】:我试图在我的 cocoa 应用程序中弹出一个警报 (NSAlert) 消息框。但默认情况下它不关注此警报窗口。相反,焦点仍然在应用程序的 mainWindow 上。以下是我的代码:-
[Alert beginSheetModalForWindow:[NSApp mainWindow] modalDelegate:g_pOpenGLView didEndSelector:@selector(CNNotifyHardwareDecodeFailDidEnd:ReturnCode:ContextInfo:) contextInfo:nil];
当我将此消息框作为 [Alert runModal] 运行时,它可以正常工作,并且将全部焦点放在警报框上。但我不想那样做,因为它会阻止主窗口处理。有人可以帮我弄这个吗?我无法弄清楚我哪里出错了。
【问题讨论】:
您在确定警报是否具有“完全焦点”时所做的区分是什么? 我希望默认选择警报框中的选项之一。除非警报框被解除,否则用户不应该能够与其他窗口进行交互。如果是这样,我会说警报框具有全部焦点。 工作表的全部意义在于它们只是它们出现的窗口的模态。如果您想阻止应用中所有窗口的交互,请使用专为此设计的-runModal
。
是的,你是对的。我也想做同样的事情:“警报框应该是它出现的窗口的模式”。但事实并非如此。即使警报框窗口作为模式表出现在其顶部,主窗口仍在接受键盘输入。有什么建议吗?
嗯,这是非常出乎意料的行为!床单一直对我很有效。建议您发布一个显示问题的示例项目。
【参考方案1】:
你可以试试
[[Alert window] makeKeyWindow];
【讨论】:
仍然没有获得键盘焦点。你还有什么建议吗?以上是关于默认情况下,可可应用程序中的模态窗口不在焦点上的主要内容,如果未能解决你的问题,请参考以下文章