【问题标题】:Apple's Services Implementation Guide - Sample Code Not WorkingApple 的服务实施指南 - 示例代码不起作用
【发布时间】:2011-11-16 06:51:26
【问题描述】:

每当我想在网上冲浪并突出显示一堆文本时,我都会在上下文菜单上看到一个“带有所选内容的新 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;

【问题讨论】:

  • 为 TextWrangler 制作插件?
  • @dragoncharmer 这些是系统服务,你已经找到并链接到这些服务。这是正确的答案,所以请将其作为答案发布并接受!
  • 我想等到我测试了来自苹果的代码,然后再接受答案。在我测试它之后,我意识到它没有用..是的,所以问题仍然存在:)
  • 请编辑您的问题以包含您的服务字典。

标签: objective-c macos cocoa contextmenu textwrangler


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 是的,你是对的。我将 NSRequiredContext 包含在其中,但它仍然不起作用。
    • @dragoncharmer:请编辑您的问题以包含更新的服务字典。
    猜你喜欢
    • 1970-01-01
    • 2017-05-23
    • 2015-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多