我一直试图让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默认禁用第三方服务.
你必须打开首选项>键盘选择第二个选项卡(快速的东西,我现在不记得)选择服务,寻找你的,并激活它.
我没有其他解决方法.
您需要使用NSRequiredContext指定所需上下文的列表.这可能是空的.
请参阅http://lists.apple.com/archives/Cocoa-dev/2009/Sep/msg00201.html
| 归档时间: |
|
| 查看次数: |
2722 次 |
| 最近记录: |