问题标签 [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 投票
3 回答
1329 浏览

cocoa - 为什么 -[NSPasteboard writeObjects:] 为 NSURL 对象数组返回 NO?

我有一个 NSArrayController 用于向 IKImageBrowserView 提供数据。我想支持从 IKImageBrowserView 拖放到其他应用程序。这是我的代码中的相关方法:

我的应用程序是新的,所以我的目标是 10.6+,根据文档,“在 Mac OS X v10.6 及更高版本上,使用 writeObjects: 直接将 URL 写入粘贴板。”

我已经验证我尝试编写的对象确实是 NSURL 对象,所以我不确定该过程在哪里发生故障或如何进一步解决问题。提前感谢您的帮助。

0 投票
1 回答
416 浏览

cocoa - NSStringPboardType 给 xml plist 不是我想要的字符串

我正在尝试从应用程序中拖动一些文本(纯字符串)。

我在控制台中得到“我的文本”。然后:

如果我将它拖到文本编辑器(TextWrangler、TextEdit)中,我会得到:

我究竟做错了什么?我如何才能将纯文本从另一端取出?

0 投票
2 回答
1554 浏览

objective-c - NSManagedObject 的 NSPasteboard 类型

我需要在我的应用程序的两个表视图之间拖动对 NSManagedObject 的引用。存储对 NSManagedObject 的引用的首选 NSPasteboard 类型是什么?

我当前的解决方案是将对象的 NSManagedObjectID 的 URIRepresentation 存储在 NSPasteboardTypeString 中。我怀疑那里有一个更优雅的解决方案。

0 投票
1 回答
397 浏览

cocoa - 如何让用户将日历事件从我的应用拖放到 iCal?

我正在编写一个 Mac 应用程序。在这个应用程序中有一些元素,我想让用户变成日历事件。我希望用户能够将元素拖到 iCal 中,最好是 BusyCal。但我不确定在拖动粘贴板上放什么。

我希望能够设置这些事件的 URL 属性,这意味着计划文本(据我所知)不是解决方案。

iCalendar 数据似乎很合适。不幸的是,iCalendar 中的 VEVENT 规范的一部分是事件的开始和结束时间,而且 iCal 和 BusyCal 似乎都不喜欢没有这些属性的 VEVENT。我希望用户通过将事件拖到日历中的那个位置来选择事件的时间。

知道我可以用粘贴板做什么来完成这项工作吗?

0 投票
2 回答
315 浏览

cocoa - 什么可能导致 -[NSPasteboard types] 崩溃?

我们的一位客户在粘贴时有时会看到这样的崩溃:

有谁知道可能导致这种情况的原因?

  • 据我所知,粘贴板对象是有效的,但随后在内部崩溃。
  • 我认为这通常是从另一个应用程序粘贴时,是否有可能另一个应用程序管理不善其对粘贴板的所有权?

来自 NSPasteboard 是否保留所有者对象的更多信息说是的,粘贴板保留了传递给它的所有者。因此,此崩溃必须是:

  • 我的代码中的过度发布。这会导致一个对象被释放,而粘贴板仍然持有对它的引用。我认为这不太可能,因为您希望问题会独立于粘贴板而出现,而且我还没有看到一个崩溃(报告)表明这一点。
  • NSPasteboard管理跨应用程序粘贴的方式出现问题并崩溃。有没有人遇到过这样的事情或者知道是什么原因造成的?
0 投票
0 回答
480 浏览

cocoa - 获取 Mac OS X 服务中选定链接的 HTML

我正在编写一个将与我的应用程序捆绑在一起的服务。用户应该能够右键单击 Safari(或其他 Web 浏览器)中的链接并调用我的服务并让它处理链接(不仅仅是用户右键单击时选择的文本)。

我唯一不能做的是获取链接指向的 URL。service 方法为您提供了一个读取NSPasteboard对象,我们将其称为pboard.

尝试获取所选 HTML 的显而易见的事情是[pboard stringForType:NSPasteboardTypeHTML],但返回 nil。所以我打电话[pboard types],它返回“public.utf8-plain-text”和 NSStringPboardType。所以看起来这个粘贴板只支持纯文本字符串。

我尝试调用[pboard addTypes:types owner:self](其中 types 是一个包含和 nil 的数组NSPasteboardTypeHTML),但是当我调用stringForType:.

[pboard types]当只返回纯字符串类型时,我可以以某种方式从粘贴板中提取 HTML吗?当我的服务被调用时,我是否能够控制粘贴板上的内容和/或从中读取的内容?

0 投票
1 回答
823 浏览

objective-c - NSPasteboard 是否保留所有者对象?

你可以NSPasteboard这样调用:

这意味着粘贴板稍后会要求所有者根据需要提供类型的数据。但是,我无法从文档中找到(也许我错过了一些明显的出血),是是否owner保留。

实际上,我担心的是,如果所有者是引用,它可能会被释放,如果粘贴板随后尝试从它请求数据,则会导致崩溃。

注意:我可能应该澄清一下,我对此感兴趣更多是为了帮助追踪错误,而不是让我的应用程序依赖它。但我也希望澄清文档。

0 投票
6 回答
9791 浏览

cocoa - 每当写入 NSPasteboard 时,我可以收到回调吗?

我已经阅读了 Apple 的粘贴板编程指南,但它没有回答我的特定问题。

我正在尝试编写一个 Cocoa 应用程序(用于 OS X,而不是 iOS),它将跟踪写入通用粘贴板的所有内容(因此,每当任何应用程序复制和粘贴时,而不是拖放,它也使用了 NSPasteboard)。我可以(几乎)通过不断地在后台线程上轮询通用粘贴板并检查changeCount来实现这一点。当然,这样做会让我觉得内心很肮脏。

我的问题是,有没有办法让粘贴板服务器在任何时候对通用粘贴板进行更改时通过某种回调通知我?我在 NSPasteboard 类参考中找不到任何东西,但我希望它潜伏在其他地方。

我可以想象的另一种方法是,如果有一种方法可以将通用粘贴板实现换成 NSPasteboard 的子类,我可以定义自己来发出回调。也许这样的事情是可能的?

如果公共的、App Store 合法的 API 可以做到这一点,我会非常喜欢,但如果需要使用私有 API,我也会接受。

谢谢!

0 投票
2 回答
1046 浏览

cocoa - 将字符串数组发送到 NSPasteBoard

将字符串或数字数组发送到粘贴板的最佳方式是什么?

我试过使用 [pasteBoard writeObjects:] 但看起来我必须继承 NSArray 才能做到这一点,它要求一个协议。

也许归档和取消归档或其他想法?谢谢你,何塞。

0 投票
2 回答
285 浏览

cocoa - 复制热键上的当前选择

我想复制当前选择,即使它在另一个应用程序(如邮件)中,当用户点击指定的热键(如 Cultured Code)在创建新任务时在 Things 中执行它时。我得到了热键,我知道如何在粘贴板上放置和取出东西。但我不知道如何获得当前的选择。

任何人?谢谢!