相关疑难解决方法(0)

NSServices无法正常工作

我一直试图让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)在服务菜单中被禁用,并在上下文菜单中被标准服务策略禁用.

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

谢谢科林

macos cocoa

7
推荐指数
2
解决办法
2722
查看次数

为Finder.app编写Snow Leopard服务

我目前正在寻找解决问题,因为无法在Finder中快速创建新文件.我将开源我写的东西因为我认为Mac社区需要解决这个问题.

在Windows上,您可以右键单击,创建新的文本文件.OS X,您应该可以使用这样的服务来执行此操作:

  • 右键单击>服务>创建新文本文件

在Snow Leopard中编写Finder 服务理论上是实现这一目标的方法,尽管我还没有找到任何示例代码.(我承认我只是简单地查看了文档).

我不确定如何开始,Apple是否在Xcode中提供服务模板.基本上我正在寻找帮助以使运行的工作服务项目.那么实现代码对于我在Obj-C中编写应该是相当微不足道的.那么我该怎么做才能创建一个新的工作服务项目呢?如果我对此有误,请告诉我正确的方法,请提供示例代码或一些步骤让我开始.

编辑:相信我们,我不是OS X菜鸟.尝试了很多应用程序来实现解决方案:PathFinder,Automator,终端等,我对它们都不满意.

我想创建一个可右键单击的菜单项来创建新文件,就像Windows一样.如果此API不允许我这样做,那么我将在必要时修改系统文件.但我宁愿这样做也不需要我攻击OS X.

可悲的事实是,当Snow Leopard发布并且开发者不满意时,Apple禁用了第三方上下文菜单项.您可以使用Automator在上下文菜单下创建服务,但它非常有限.

是的,Quicksilver是我此刻创建文件的方式,除非我在我touch ~/Desktop/file.txt或任何地方都在终端.

如果您无法通过提供Xcode项目的源代码来编写服务来回答我的问题,请保留您对我应该如何使用计算机的意见.无论如何,我想在我自己实施之后,我可能会回答我自己的问题.

cocoa objective-c application-design osx-snow-leopard

7
推荐指数
1
解决办法
4169
查看次数

OSX/Cocoa:在右键单击和服务列表的菜单中设置服务

我已经按照所有Apple文档为设置右键菜单列表和服务列表的服务:

  1. 我已经完成了所有相关的info.plist条目.(发送类型,端口名称,菜单标题,实例方法等)
  2. 我创建了处理服务的方法.
  3. 我在应用程序中添加了服务注册码.
  4. 我构建了我的应用程序,将其放在应用程序目录中,注销并重新登录.

尽管如此,我无法在任何菜单项中看到我的服务.

编辑**这是我的info.plist的服务部分:

    <key>NSServices</key>
<array>
    <dict>
        <key>NSMenuItem</key>
        <dict>
            <key>default</key>
            <string>MyApp/Send to MyApp</string>
        </dict>
        <key>NSMessage</key>
        <string>contentService</string>
        <key>NSPortName</key>
        <string>MyApp</string>
        <key>NSSendTypes</key>
        <array>
            <string>NSStringPboardType</string>
            <string>NSFileContentsPboardType</string>
        </array>
    </dict>
</array>
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?提前致谢.

macos service cocoa objective-c right-click

1
推荐指数
1
解决办法
1658
查看次数