NSServices无法正常工作

7 macos cocoa

我一直试图让NSServices最近为我的应用程序工作而没有成功.我根据文档进行了设置,但它没有出现在服务菜单中(但它确实出现在系统偏好设置的键盘快捷键部分作为服务菜单项)无论如何,我在我的app控制器中设置服务,如下所示:

[NSApp setServicesProvider:self];
Run Code Online (Sandbox Code Playgroud)

暴露的方法是:

- (void) addDownloadService:(NSPasteboard *)pboard

     userData:(NSString *)userData error:(NSString **)error
Run Code Online (Sandbox Code Playgroud)

我的Info.plist看起来像这样:

<key>NSServices</key>
        <array>
                <dict>
                        <key>NSReturnTypes</key>
                        <array>
                                <string></string>
                        </array>
                        <key>NSKeyEquivalent</key>
                        <dict>
                                <key>English</key>
                                <string>S</string>
                                <key>Key equivalent (with command and shift)</key>
                                <string>S</string>
                        </dict>
                        <key>NSSendTypes</key>
                        <array>
                                <string>NSStringPboardType</string>
                                <string>NSURLPboardType</string>
                                <string>NSRTFPboardType</string>
                        </array>
                        <key>NSPortName</key>
                        <string>MyApp</string>
                        <key>NSMessage</key>
                        <string>addDownloadService</string>
                        <key>NSMenuItem</key>
                        <dict>
                                <key>English</key>
                                <string>MyNewService</string>
                                <key>default</key>
                                <string> MyNewService </string>
                        </dict>
                </dict>
        </array>
Run Code Online (Sandbox Code Playgroud)

我尝试使用textedit运行debug命令,如下所示:/Applications/TextEdit.app/Contents/MacOS/TextEdit -NSDebugServices com.companyname.MyApp

它输出以下内容:MyNewService(com.companyname.MyApp)在服务菜单中被禁用,并在上下文菜单中被标准服务策略禁用.

任何想法为什么它可能无法正常工作?

谢谢科林

小智 8

我刚刚遇到了同样的问题.似乎Snow Leopard默认禁用第三方服务.

你必须打开首选项>键盘选择第二个选项卡(快速的东西,我现在不记得)选择服务,寻找你的,并激活它.

我没有其他解决方法.


Nei*_*lis 8

您需要使用NSRequiredContext指定所需上下文的列表.这可能是空的.

请参阅http://lists.apple.com/archives/Cocoa-dev/2009/Sep/msg00201.html