问题标签 [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.
swift - 在 Sandbox 中使用 Cocoa NSSavePanel 会导致断言失败
我正在尝试使用 NSSavePanel 并将这一行添加到我的代码中。
每次调用此代码时都会出现此错误。我不太确定这里发生了什么,因为我只是在创建一个新对象。任何帮助表示赞赏。谢谢!
swift - 自定义沙盒 NSSavePanel 警报
我正在使用委托的 panel(_:validate) 方法验证来自 NSSavePanel 的 url,如果 url 无效则抛出错误。在这种情况下,NSSavePanel 会显示一个警报,我想根据抛出的错误对其进行自定义(意味着提供一些人类可读的描述),保持保存面板窗口打开,然后让您选择另一个路径。
LocalizedError 在不使用 App Sandbox 时工作得很好,但在沙盒应用程序中,永远不会调用错误描述的 getter,并且警报中的消息是通用的“操作无法完成。(#yourErrorType)”,我猜这是某种原因造成的通过沙盒 NSSavePanel 的不同继承链。
我正在努力想办法解决这个问题 - 是否可以以某种方式自定义警报,同时仍然保持应用程序沙盒化?
附录:用户选择文件的权限 => r/w。运行以下示例会生成带有/不带有沙箱的不同警报。
nsopenpanel - NSOpenPanel 和 NSSavePanel 本地化
我使用 macOS Mojave 和 XCode 10.0 的非英语(捷克语)用户界面,我想在我的 Swift 4.2 应用程序中使用 NSOpenPanel 和 NSSavelPanel。面板中使用的一些文本项我可以通过 NSOpenPanel/NSSavePanel 类属性进行本地化,但有些(例如取消按钮)我不能。任何建议如何本地化这些?谢谢。
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。)
swift - NSSavePannel - 如何限制用户只保存一组目录?
用户必须保存文件,但我只希望他们将文件保存在一个文件夹中。这该怎么做?
我已经尝试过实现委托并在目录不同时强制设置它。这不起作用。保存面板打开时,用户仍然可以选择其他文件夹
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 的良好交互
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 '沙盒扩展字符串的意外类类型!' 带回溯(
有没有人有同样的问题和解决方案?
这是我用来保存文件的代码:
}
cocoa - 如何让 NSSavePanel 使用系统语言?
我在 macOS 上有一个使用 SWT 的 Java 应用程序。有时,此应用程序需要询问文件名。现在,虽然 SWT 有一个文件对话框,但在最近的版本中这有点坏了。
因此,我创建了自己的文件对话框,该对话框使用 JNA 通过 Objective C 运行时创建 NSSavePanel。这样我就可以摆脱“标签”字段并正确处理文件扩展名。就像一个魅力,除了:我的 macOS 是德文的,但 NSSavePanel 是英文的(就像来自 SWT 的一样)。如何让对话框使用系统语言?
该应用程序还使用自定义 Java 启动器。如果调整启动器的构建文件中的可用语言会有所帮助,我还没有尝试过,因为出于各种原因,我宁愿避免重建它。有没有办法仅使用 Cocoa(或 Core Foundation)API 来实现这一点?
编辑:我们已经检查了一个带有 High Sierra 的系统,那里的对话框是德语的