问题标签 [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.
cocoa - 使用UTI而不是NSFileContentsPboardType将文件内容放在NSPasteboard上?
我有带有一些图像和文本的富文本文件。在我的 Cocoa 应用程序中,我试图将该文件的内容放在该文件上,NSDragPboard
以便用户可以将内容拖到其他应用程序(TextEdit、Mail 等)中。
一个用例是这样的:富文本文件包含一个电子邮件模板,用户将内容拖到新的邮件中。
我试过这个没有成功:
苹果文档是这样说的:
将文件 filename 的内容写入接收者,并声明数据的类型为 NSFileContentsPboardType以及适合文件扩展名的类型(由 NSCreateFileContentsPboardType 函数在传递文件扩展名时返回),如果它有一个。
在 ClipboardViewer 应用程序中,我可以看到一些数据类型,其中一种是NXFileContentsPboardType
. 但是,Mail 和 TextEdit 等应用程序不允许删除该数据类型。
当我手动(Control+C)将富文本内容复制到剪贴板时,我看到了我想要的所有不同数据类型:
public.rtf
public.utf8-plain-text
NSStringPboardType
- ...
那么我怎样才能自己以编程方式做到这一点呢?我是否必须弄清楚所有各种 UTI 类型并设置相应的数据?我以为那[pboard writeFileContents:path]
是为了...
谢谢,马克。
编辑:
取得进展...这适用于.rtf
文件,但不适用于.txt
文件:
对于.txt
文件,粘贴板上的数据类型是public.text
. 但是,TextEdit 和 Mail.app 不允许删除该类型。public.rtf
如果富文本工作正常...
cocoa - 如何先保存粘贴板内容,然后再恢复?
我有一个不露面的 Mac OS X 应用程序,它需要从其他应用程序中复制选择。我通过模拟 CMD+C 击键来实现这一点。它完美地工作。但是有一个,我认为它很关键,副作用。未经用户许可,它将覆盖用户的粘贴板。所以在我复制选择之前我在想我应该保存粘贴板内容然后恢复它。有人可以给我一些提示,也许是示例代码?
cocoa - NSPasteboard:获取启动拖放会话的应用程序的名称
我的 Cocoa 应用程序可以接收来自其他应用程序的拖动操作。
有没有办法确定哪个其他应用程序启动了拖动(即数据来自哪里)?
我已经实现- (BOOL)performDragOperation:(id <NSDraggingInfo>)sender
了,但是在拖动的信息对象中找不到这种信息。
用例:用户可以在 Safari 中选择文本并将其放入我的应用程序中。我想知道文本是从哪个网站粘贴的。
谢谢!
objective-c - 从 nspasteboard 获取字符串
也许这是一个漫长的夜晚,但我无法理解如何检查剪贴板中的字符串
我一直在阅读 NSPasteboard 文档..
有人可以帮我吗?
cocoa - 粘贴板上的多种类型,包括文件、rtfd 和自定义类型 (Mac OS X 10.6)
一旦您了解了 UTI,10.6 中的新粘贴板 api 似乎运行良好,但我遇到了一个我无法破解的情况:如果您声明多个数据类型与文件拖动一起怎么办?
查看新粘贴板的工作方式,您可以使用 setString、setData、setPropertyList 或 writeObjects 在其上放置数据。前 3 个要求您提前指定 UTI,以便接收器可以选择它想要的表示。
最后一个 - writeObjects - 需要一个符合 NSPasteboardWriting 的对象数组,例如便利类 NSPasteboardItem。
问题在于 Finder 将添加到粘贴板的任何 url 解释为文字 url,因此它不是拖动文件而是创建文件的 url。
没有办法(我能找到)为 URL 创建一个 NSPasteboardItem 。这留下了这个(从标题):
但是,如果您将 URL 与 NSPasteboard 项目混合使用,则结果将不起作用。
如果有人可以编写一些可以同时完成这两个方面的东西,我会认为这是一个很好的例子。
这是测试:
拖动到 TextEdit 应该插入文本
拖到 Finder 应该会添加一个文件。
objective-c - 如何将所有属性内容从 NSTextView 复制到 NSPasteboard
我正在尝试实现从 NSTextView 到剪贴板的自动复制内容,以便将来将其粘贴到编辑器中。NSTextView 具有纯文本和属性文本和图像。
如果我选择全部并按 CMD+C 复制并粘贴到一些富编辑器(例如 Mail.app),一切都很好。
我在CocoaDev.com上找到了复制 RTF 的解决方案
但是,当我尝试通过此解决方案复制我的内容时,如果我在编辑器中粘贴,则不会发生任何事情。
如何将带有图像的属性文本从 NSTextView textStorage 复制到 NSPasteboard?
cocoa - NSPasteboard 和简单的自定义数据
我很难让 NSPasteboard 工作,所以请原谅我缺乏理解。
我想要的只是一种简单的方法来从粘贴板中写入和检索仅适用于我的应用程序的 NSUInteger 值。我所做的就是在我的应用程序中拖放一个项目,所以我在粘贴板中需要的只是项目的 ID。
我曾尝试研究 NSPasteboardItemDataProvider 和 NSPasteboardItem 以及 NSData,但他们都有复杂的方式来做如此简单的事情。事实上,我不知道做如此简单的事情的正确方法是什么——周围的每个样本似乎都在处理字符串类型,或者更复杂的事情。[NSMutable SetData] 选择器似乎也不存在,即使代码中没有警告。
如果有人能指出我正确的方向,我将不胜感激。:)
编辑:我正在使用 [dragImage ...] 来帮助我进行拖动操作。
macos - Mac OSX / cocoa - 使用 NSPasteBoard 项目的原始数据获取位置路径字符串
我有一个应用程序,它允许我将项目从我的网络浏览器拖到应用程序停靠图标。
当我从网络上拖动图像并使用 [pBoardItem dataForType:NSPasteboardTypePNG] 获取原始数据时;我得到了我需要的原始图像数据,但我还需要知道图像形式的位置(即http://www.somedomain.com/somedir/someimage.png)或者如果它是本地的(/用户/somedude/photos/myphoto.png)。
如何获取路径位置信息?
提前致谢。
[编辑** 删除了我在此处对 stringForType 所做的错误评论]
cocoa - NSImage → NSURL → 自定义对象
我的应用程序正在尝试从 NSImage 对象(来自粘贴板)创建自定义对象,但我当前的进程只接受图像 URL。
我想避免在这一点上进行重大更改,所以我想知道是否有任何方法可以获取 NSImage 的 URL(这似乎是一个合理的期望,因为可以从 URL 初始化 NSImage)
谢谢。
编辑(答案)
我走了一条略有不同的路线。我没有将粘贴板的内容作为 NSImage 数组获取,而是将其作为 NSURL 数组获取。然后我可以将这些输入到我的流程中。
menu - 如何使用 NSPasteboard 在应用程序之间传输数据(使用上下文菜单)
“NSPasteboard 对象在粘贴板服务器之间传输数据。服务器由所有正在运行的应用程序共享。它包含用户剪切或复制的数据,以及一个应用程序想要传输到另一个应用程序的其他数据。NSPasteboard 对象是一个应用程序到服务器和所有粘贴板操作的唯一接口。
NSPasteboard 对象还用于在每个应用程序的服务菜单中列出的应用程序和服务提供者之间传输数据。拖动粘贴板 (NSDragPboard) 用于传输用户拖动的数据。”
我在苹果的 NSPasteboard 文档中找到了这个。到目前为止,我只知道如何使用粘贴板进行简单的复制粘贴。我感兴趣的是如何使用上下文菜单而不是拖放来通过粘贴板服务器在应用程序之间传输用于非复制粘贴目的的数据。例如,如果用户右键单击一个单词并单击上下文菜单中的“在字典中查找”,则该单词随后(可能)通过粘贴板发送到 Dictionary 应用程序。
有人可以演示一个概念验证应用程序,展示如何访问粘贴板服务器中存储用户使用“在字典中查找”的单词的数据吗?