2

每当我喜欢在网上冲浪并突出显示一堆文本时,我都会在上下文菜单上看到一个“带有所选内容的新 TextWrangler 文档”项。

如何在我的应用程序中复制此功能,以便每当用户在任何其他应用程序中选择文本时,他都可以在上下文菜单中看到“带有选择的新(我的应用程序)文档”项,然后单击它,它会提供所选内容文本到我的应用程序?

更新

为了尝试回答我自己的问题,我按照这里的示例代码:http: //developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/SysServices/Articles/providing.html

它在突出显示的文本上实现了一个简单的 rot13 加密服务。但它不起作用。

虽然我的“加密文本”出现在系统首选项菜单中,如上图所示的“带有选择的新建 TextWrangler 文档”,但它实际上并没有出现在应用程序的服务菜单或选择文本时的右键单击上下文菜单中。

有人可以告诉我为什么苹果文档中的示例代码不起作用

@PeterHosey 在这里,也有 NSRequiredContext :

我的应用程序名称称为“simpleEncrypt”,消息与从苹果服务实施指南中复制的消息完全相同。

- (void)simpleEncrypt:(NSPasteboard *)pboard
userData:(NSString *)userData error:(NSString **)error;
4

2 回答 2

0

您需要在服务字典中包含一个NSRequiredContext字典,该字典描述何时适合启用该服务。在您这样做之前,默认情况下它在所有上下文中都被禁用。(我不确定为什么即使在您启用它之后它仍然没有显示,但这是必需的第一步。)

于 2011-11-22T17:53:58.727 回答
0

我的翻译文本应用程序的 Info.plist 中,我NSStringPboardType其用作每个服务的发送类型。

系统声明的UTIs列表表明现代的等价物是public.utf8-plain-text,因此请尝试将服务的发送和返回类型更改为该类型。

如果可行,列出所有纯文本变体可能是个好主意。这些都列在统一类型标识符参考中;它们是符合public.plain-text.

于 2011-11-27T08:04:56.983 回答