在我的 mac 应用程序中我正在使用NSSavePanel
- 但它的行为很奇怪。有时我无法更改文件的默认名称。
我这样使用它:
NSSavePanel *savePanel = [NSSavePanel savePanel];
[savePanel setAllowedFileTypes:@[@"jpg"]];
[savePanel setLevel:CGShieldingWindowLevel()];
if([savePanel runModal] == NSFileHandlingPanelOKButton)
{
//saving file
}
我不明白为什么有时它允许我更改文件名,而有时则不行,我可以保存文件,但保存面板中的更改名称被阻止
这不是一个正确的答案,但可能会阐明这个问题(我也在努力解决这个问题)。
到目前为止我发现的是,如果你没有活动窗口你打电话时
result = panel.runModal() // swift
NSModalResponse result = [panel runModal]; // Obj-C
那么行为NSSavePanel
已损坏,尽管您可以单击名称字段,但无法在其中键入(如果您尝试,则会发出蜂鸣声)。
我还找到了一个丑陋的小解决方法。如果您允许创建新目录,
panel.canCreateDirectories = YES; // Obj-C
然后按保存面板中的按钮来执行此操作 - 一个小纸片(又一个窗口......)出现在顶部NSSavePanel
如果您取消并关闭此表 - 您将重新获得在姓名字段中输入内容的能力。
由于OP没有提供任何关于他的问题的编程场景和环境的描述,但它似乎是相关的,因为强制窗口级别为“模态”为他解决了问题。
就我而言(我正在打开NSSavePanel
从菜单栏项弹出窗口。唉,在我的 NSSavePanel 设法“附加到它”之前,弹出窗口关闭了。手动设置级别
panel.level = NSWindow.Level.modalPanel // Swift
panel.level = NSModalPanelWindowLevel; // Obj-C
没有帮助解决问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)