我有一个将菜单项添加到Finder的上下文菜单的应用程序。

目前,我的菜单项针对所有选中的项显示。

我想执行一些过滤,而不显示某些路径的菜单项。

我相信我已经遵循了《 Apple服务实施指南1》中的指示,但是在实现这一目标方面我没有任何运气。

我的理解是我的过滤逻辑应在我的响应者的validRequestorForSendType方法中执行。 我的问题是此方法永远不会被调用,因此我假设它没有在响应者链中注册,但是我无法弄清丢失的内容。

我是OSX的新手,我继承了此代码,因此这里有一些其他上下文,可能会提供一些线索:

该应用程序唯一的UI存在是系统菜单栏中的任务栏图标。 没有任何东西来自NSApplication(据我所知它是一个NSResponder)。 有一个名为AppDelegate的类,该类派生自设置了服务提供者的NSObject <NSApplicationDelegate> applicationDidFinishLaunching此类中:

  • 分配一个MyResponder(源自NSResponder)实例
  • NSRegisterServicesProvider(myResponder,@“ 我的Info.plist中的portName ”)
  • [NSApp setServicesProvider:myResponder]
  • NSUpdateDynamicServices()

在MyResponder的initialize()函数中,它调用[NSApp registerServicesMenuSendTypes]并定义有效validRequestorForSendType和我的服务函数(如Info.plist中所列)。

如前所述,我运行我的应用程序,打开Finder,单击路径并获得应用程序的菜单项,但是由于没有调用MyResponder的validRequestorForSendType因此没有机会对其进行过滤。

关于我所缺少的任何想法? 我是否需要在我跳过的XCode的xib查看器中进行连接?

  ask by ribram translate from so

本文未有回复,本站智能推荐:

关注微信公众号