Apple的服务实施指南 - 示例代码不起作用

时间:2011-11-16 06:51:27

标签: objective-c macos cocoa contextmenu textwrangler

每当我想在网上冲浪并突出显示一堆文字时,我会在上下文菜单中看到“带有选择的新TextWrangler文档”项目。

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

更新

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

在突出显示的文本上实现简单的rot13加密服务。但它没有用。

http://i43.tinypic.com/8z38qo.jpg http://i42.tinypic.com/2z4co0o.jpg

虽然我的“加密文本”出现在系统首选项菜单中,如“New TextWrangler Document with Selection”,如上所示,但它实际上并未显示在应用程序的服务菜单中,或者在选择文本时右键单击上下文菜单。

有人可以告诉我为什么苹果文档中的示例代码无效

@PeterHosey在这里,也是NSRequiredContext:

http://i39.tinypic.com/51d06o.jpg

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

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

2 个答案:

答案 0 :(得分:0)

您需要包含描述服务何时适合启用的an NSRequiredContext dictionary in your service dictionary。在此之前,默认情况下会在所有上下文中禁用它。 (我不确定为什么即使你启用它之后它仍然没有出现,但这是必需的第一步。)

答案 1 :(得分:0)

the Info.plist for my Translate Text application中,我使用NSStringPboardType作为其每项服务的发送类型。

system-declared UTIs列表显示现代等价物为public.utf8-plain-text,因此请尝试将服务的发送和返回类型更改为该值。

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