我在项目中遇到了 NSSavePanel 问题,因此为了尝试隔离问题,我在默认窗口的 viewDidLoad 中创建了一个仅包含 NSSavePanel 代码的测试项目。
测试项目
我用来显示 NSSavePanel 的代码:
dispatch_async(dispatch_get_main_queue()) {
let savePanel = NSSavePanel()
savePanel.nameFieldStringValue = "test.png"
let result = savePanel.runModal()
if result == NSFileHandlingPanelOKButton {
print("You hit that OK button.")
}
}
出现的保存面板如下所示:
真正的项目
当我在现有应用程序中使用相同的代码(图像文件名除外)时,我得到一个 NSSavePanel,如下所示:
主要区别:
- 出现的窗口未激活
- 标题栏不与窗口的其余部分分开
- 每当您单击不是按钮或文本字段的东西时,窗口就会在屏幕上跳下几个像素,就好像我打算拖动它一样。
这里到底发生了什么?显然,问题不仅仅是那段代码。有谁知道它是什么?