问题标签 [nssavepanel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3105 浏览

swift - 在 Sandbox 中使用 Cocoa NSSavePanel 会导致断言失败

我正在尝试使用 NSSavePanel 并将这一行添加到我的代码中。

每次调用此代码时都会出现此错误。我不太确定这里发生了什么,因为我只是在创建一个新对象。任何帮助表示赞赏。谢谢!

0 投票
0 回答
84 浏览

objective-c - 在 NSOpenPanel/NSSavePanel 中显示 Mac 设备

对于给定的 NSOpenPanel 或 NSSavePanel,您可以设置要显示的目录:

在那里你可以设置任何你喜欢的路径,但是你怎么能显示网络或 Mac 设备呢?

Mac 设备视图

网络设备视图

0 投票
1 回答
298 浏览

swift - 自定义沙盒 NSSavePanel 警报

我正在使用委托的 panel(_:validate) 方法验证来自 NSSavePanel 的 url,如果 url 无效则抛出错误。在这种情况下,NSSavePanel 会显示一个警报,我想根据抛出的错误对其进行自定义(意味着提供一些人类可读的描述),保持保存面板窗口打开,然后让您选择另一个路径。

LocalizedError 在不使用 App Sandbox 时工作得很好,但在沙盒应用程序中,永远不会调用错误描述的 getter,并且警报中的消息是通用的“操作无法完成。(#yourErrorType)”,我猜这是某种原因造成的通过沙盒 NSSavePanel 的不同继承链。

我正在努力想办法解决这个问题 - 是否可以以某种方式自定义警报,同时仍然保持应用程序沙盒化?

附录:用户选择文件的权限 => r/w。运行以下示例会生成带有/不带有沙箱的不同警报。

0 投票
0 回答
255 浏览

nsopenpanel - NSOpenPanel 和 NSSavePanel 本地化

我使用 macOS Mojave 和 XCode 10.0 的非英语(捷克语)用户界面,我想在我的 Swift 4.2 应用程序中使用 NSOpenPanel 和 NSSavelPanel。面板中使用的一些文本项我可以通过 NSOpenPanel/NSSavePanel 类属性进行本地化,但有些(例如取消按钮)我不能。任何建议如何本地化这些?谢谢。

0 投票
1 回答
301 浏览

swift - NSSavePanel 名称不是用户可编辑的

我是 OSX GUI 编程的初学者,所以请对我温柔一点。

我正在尝试将轻量级 GUI 元素从 appkit 添加到 CLI,因此我正在开发一个非常小的程序来获取 PDF 的内容并将其保存到文本文件中。

这是我的代码

(我知道,这里有很多单调的东西,比如所有强制解包和毫无意义地将 URL 转换为路径。我的原因很模糊......)

所以这段代码最有效:当我从终端窗口运行它时,swift guitest.swift它会弹出一个文件选择器窗口,让我选择一个 pdf 文件,然后弹出一个保存对话框让我选择目录,然后保存将pdf中的文本提取到该目录中。

但它不会让我更改文件名。我可以突出显示默认提供的“Untitled.txt”,我什至可以将光标移入该字段......但它不响应键盘输入。

之前的 SO中,有人建议添加 anameFieldStringValue以使其可编辑,但是,正如您从上面的代码中看到的那样,我这样做了,但它不起作用。

我从这个非常古老的 SO中看到,至少在 Objective-C 领域,您必须启动某种应用程序对象才能接受键盘输入。今天在斯威夫特大陆也是这样吗?(即使出于某种奇怪的原因,您可以在不执行任何操作的情况下接受鼠标输入?!)如果是这样,我该怎么做?

编辑:我从之前的评论中得到,所以我认为这可能是一个糟糕的主意,如果我想学习 Mac GUI 编程,我应该用 XCode 和故事板以及其他所有东西来做这件事。但是你能容忍我用愚蠢的方式来尝试一次学习一件事吗?(即,学习提供的 GUI API,而不是同时尝试学习 XCode 和 Apple 的首选架构风格。)

谢谢!

(最新版本的 OSX 上的 Swift 4.2。根本不使用 XCode。)

0 投票
1 回答
284 浏览

swift - NSSavePannel - 如何限制用户只保存一组目录?

用户必须保存文件,但我只希望他们将文件保存在一个文件夹中。这该怎么做?

我已经尝试过实现委托并在目录不同时强制设置它。这不起作用。保存面板打开时,用户仍然可以选择其他文件夹

0 投票
1 回答
351 浏览

swift - Swift Mac Os 应用程序 - NSSavePanel 在“仅后台”应用程序中的行为不正确

我正在开发一个 swift Mac OS 应用程序,它只在状态栏(带有弹出框)中工作,Application is background only设置为true.

在弹出框内,用户可以与按钮交互以保存图像,更具体地说,触发了以下功能:

问题是:

  • 如果我输入Application is background only= true
    我无法与 NSSavePanel 交互(无法更改save as字段)并且如果我在该框中写入,则文本将写入我正在交互的最后一个应用程序中(焦点并不真正在模式上) .
  • 如果我放Application is background only= false
    NSSavePanel 工作得很好,但这不是一个好的解决方案,因为我不想让图标出现在 Dock 中

所以这个问题显然与Application is background only但我没有找到一种方法来拥有两者:

  • 扩展坞中没有应用程序图标
  • 与 NSSavePanel 的良好交互
0 投票
2 回答
651 浏览

swift - 在非沙盒中使用 Cocoa NSSavePanel 会导致断言失败

仅在 MacOS 10.15 中,仅在尝试将文件两次保存到同一目录时,并且仅在打开 NSOpenPanel 之后点击取消或打开。我的应用程序因以下堆栈跟踪而挂起,并且该应用程序无法恢复,我不得不将其杀死。

*** -[NSSavePanel _attachSandboxExtensions:toURL:orURLs:]、/BuildRoot/Library/Caches/com.apple.xbs/Sources/AppKit/AppKit-1894.30.142/Nav.subproj/OpenAndSavePanelRemote/NSVBOpenAndSavePanels.m 中的断言失败: 711 -[NSSavePanel observeValueForKeyPath:ofObject:change:context:] 捕获非致命 NSInternalInconsistencyException '沙盒扩展字符串的意外类类型!' 带回溯(

有没有人有同样的问题和解决方案?

这是我用来保存文件的代码:

}

0 投票
2 回答
32 浏览

swift - 网址另存为扩展

当此 URL 扩展作为面板运行时,它无法返回 URL,似乎绕过了完成:

但作为独立窗口运行它工作正常。这里有另一个相关的答案但这里的用法不同:即

我认为用户取消会推断处理应该结束。

0 投票
0 回答
45 浏览

cocoa - 如何让 NSSavePanel 使用系统语言?

我在 macOS 上有一个使用 SWT 的 Java 应用程序。有时,此应用程序需要询问文件名。现在,虽然 SWT 有一个文件对话框,但在最近的版本中这有点坏了。

因此,我创建了自己的文件对话框,该对话框使用 JNA 通过 Objective C 运行时创建 NSSavePanel。这样我就可以摆脱“标签”字段并正确处理文件扩展名。就像一个魅力,除了:我的 macOS 是德文的,但 NSSavePanel 是英文的(就像来自 SWT 的一样)。如何让对话框使用系统语言?

该应用程序还使用自定义 Java 启动器。如果调整启动器的构建文件中的可用语言会有所帮助,我还没有尝试过,因为出于各种原因,我宁愿避免重建它。有没有办法仅使用 Cocoa(或 Core Foundation)API 来实现这一点?

编辑:我们已经检查了一个带有 High Sierra 的系统,那里的对话框是德语的