问题标签 [nspasteboard]

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 回答
229 浏览

objective-c - NSServices:使用沙盒应用程序“如何在 Finder 中创建新文件”

我尝试向我的应用程序添加服务。该应用程序有一个名为“MyService”的服务。我在 Finder 中有一个文件,我想在同一位置用新名称复制该文件。用户将右键单击该文件并选择 MyService。一个新文件将出现在原始文件旁边,并带有一个新文件名。问题是我的应用程序是沙盒的。我可以通过以下方式获取所选文件的 url:

我的 fileArray 将包含文件路径。然后我可以用新的文件名更改这个文件路径。如果我只是使用创建一个新文件:

我得到一个错误!我知道我在做什么是错误的,但是如何告诉 Finder 用户确实提交了该操作,因此该操作在某种程度上是安全的。如何判断这个 newFileURL 是允许的?谢谢您的帮助

0 投票
2 回答
277 浏览

macos - 有没有办法检查应用程序将接受哪些粘贴板项目?

根据我对粘贴板工作原理的理解,当发出粘贴请求时,请求者还会指出它允许的数据类型。有没有办法在发出粘贴请求之前获取有关应用程序的信息?

0 投票
2 回答
2215 浏览

objective-c - 将 FileURL 的名称写入粘贴板

我想使用[pasteboard writeObjects:pasteboardArray];wherepasteboard是通用粘贴板的对象并且pasteboardArray是 NSURL 的 NSArray 将一些文件 URL 写入通用粘贴板。它在粘贴板上写网址,例如

文件://本地主机/用户/

文件://本地主机/卷/

...等等

我想把这些 URL 写成如下

用户

..等等

即只有文件/目录的名称,就像系统在复制任何文件/目录时所做的那样。

0 投票
1 回答
196 浏览

macos - 用 NSPasteboard 中的第二个最新项目替换最新项目

有没有办法从粘贴板中全局删除当前项目(Command+V在任何应用程序中按下时都会显示的项目)并使其按下Command+V粘贴最后一个复制的项目?

假设我复制foo然后bar,我在我的应用程序中按下一个bar从粘贴板中删除的按钮,现在如果我按下Command+V任何地方(在任何应用程序中)我看到foo粘贴并且bar无处可见,它已经完全从用户的机器上消失了。

0 投票
2 回答
2501 浏览

macos - 从 NSPasteBoard 存储和检索自定义对象

我有一个属于此类的对象,其中包含以下声明:

标题

children保存该类的其他对象,node保存可以是NSView或的对象NSImageView

我希望能够将这种类型的对象复制和粘贴到/从NSPasteboard.

我有谷歌,但解释很模糊。

我应该怎么做才能使这个类对 NSPasteboard 可复制/可读,或者换句话说,使其符合NSPasteboardWriting协议NSPasteboardReading

我对这是如何完成的一无所知,而且像往常一样,Apple 文档和没有什么是一回事。

0 投票
2 回答
273 浏览

objective-c - 全局替换 NSPasteboard.generalPasteboard()

我希望NSPasteboard.generalPasteboard()暂时切换到由我的应用生成的自定义NSPasteboard.pasteboardWithUniqueName()

因此,当用户在切换粘贴板时按下 Cmd+C/Cmd+V 时,将使用我的应用程序的粘贴板而不是一般的粘贴板。

有没有办法做到这一点?

0 投票
1 回答
338 浏览

objective-c - 右键单击文本并选择服务如何工作?

[1] 当我选择并右键单击任何应用程序中的任何文本时,我会看到一个Services菜单,我可以在其中单击以调用任何服务,例如Search With Google.

单击后,一个NSPasteboard对象会自动发送到包含所选文本的服务。

[2] 3rd 方应用程序可以使用该BOOL NSPerformService ( NSString *itemName, NSPasteboard *pboard )功能以编程方式调用任何服务。

在这里,应用程序必须设置NSPasteboard发送到服务的对象。


有没有办法以编程方式调用任何服务,但不设置NSPasteboard对象(NSPasteboard对象应自动包含 [1] 中的选定文本)?

[1] 中的 OS X如何将NSPasteboard包含选定文本的对象发送到服务?有一些私有API吗?

0 投票
1 回答
503 浏览

cocoa - 如何使用 AppleScriptObjC 和 NSPasteboard 读取剪贴板

我正在寻找 AppleScriptObjC 的方法,并且发现 Shane Stanley 的Everyday AppleScriptObjC很有帮助。但我仍然很难知道从哪里开始NSPasteboard

这是我到目前为止所拥有的:

当然,这是行不通的。但它似乎确实在做些什么。

它返回:

任何指针将不胜感激。

0 投票
1 回答
372 浏览

objective-c - 可可:拖放 svg 图像

我正在开发在 NSCollectionView 中显示图标的简单应用程序。NSCollectionView 以 png 格式显示图标预览,用户可以将其拖到图像编辑器中。我想允许用户拖放不仅是 png,还包括 svg 文件。我加载了 svg 图像数据,但我如何将其复制到 NSPasteboard 以将 svg 数据复制到 Sketch 应用程序。

0 投票
2 回答
213 浏览

objective-c - NSRTFPboardType 并粘贴到 gmail 浏览器窗口?

我有一个NSTextView包含一些带有属性的文本(语法突出显示)。我正在尝试使用一个复制选项来保持语法突出显示,以便我可以将其粘贴到 gmail 文本窗口中。目前,当我复制粘贴时突出显示不会出现,但是如果我要直接从这个 stackoverflow 页面复制以下部分:

并将其粘贴到 gmail 中,它将以完整的语法高亮粘贴没有问题。上面的代码是我用来生成我的 RTF 代码的,我可以确认它确实生成了正确的 RTF,因为我有一个test正在生成的变量。

有什么想法我在这里做错了吗?据我了解,这应该有效。

(我应该注意到我已经在多种浏览器中尝试过——Chrome、Safari 和 Firefox)。