我正在运行一个警告对话框作为工作表。问题是,我只想在工作表得到答案时继续执行程序。所以我添加了Apple的默认模态代码:
NSModalSession session = [NSApp beginModalSessionForWindow:aWindow];
for (;;)
if ([NSApp runModalSession:session] != NSRunContinuesResponse)
break;
[NSApp endModalSession:session];
这使我的代码非常干净,但是有一个问题:如果我这样做,表单将不会再进入菜单栏前面(我使用NSStatusWindowLevel
来获得该效果)。
有没有人可以解决这个问题?我想避免使用末尾选择器,因为它们使代码非常混乱。谢谢!
答案 0 :(得分:3)
我遇到了同样的问题,发现我需要在会话循环中设置窗口级别才能正常工作。在你的情况下像:
NSModalSession session = [NSApp beginModalSessionForWindow:aWindow];
for (;;) {
[mySheet setLevel: NSStatusWindowLevel];
if ([NSApp runModalSession:session] != NSRunContinuesResponse)
break;
}
[NSApp endModalSession:session];