Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos OSX服务能否提供接口?_Macos_Cocoa_Service - Fatal编程技术网

Macos OSX服务能否提供接口?

Macos OSX服务能否提供接口?,macos,cocoa,service,Macos,Cocoa,Service,我试图实现的是:一个服务,它将接受一个由数字组成的选择,显示一个窗口,列出用户可以选择的几种货币,然后用用户选择的转换货币替换选择 问题是:我几乎可以让所有的东西都工作。服务正确注册,以此类推,我可以通过粘贴板将文本返回到调用应用程序,但只有当我从服务调用的方法设置粘贴板内容时。如果我打开一个窗口,然后调用注册对象中的一个方法来返回文本,那么什么也不会发生 在服务调用的方法中,我实例化了一个窗口控制器并显示窗口。在用户单击窗口中的必需选项后,我调用注册对象中的一个方法来设置粘贴板上的文本。我现在

我试图实现的是:一个服务,它将接受一个由数字组成的选择,显示一个窗口,列出用户可以选择的几种货币,然后用用户选择的转换货币替换选择

问题是:我几乎可以让所有的东西都工作。服务正确注册,以此类推,我可以通过粘贴板将文本返回到调用应用程序,但只有当我从服务调用的方法设置粘贴板内容时。如果我打开一个窗口,然后调用注册对象中的一个方法来返回文本,那么什么也不会发生

在服务调用的方法中,我实例化了一个窗口控制器并显示窗口。在用户单击窗口中的必需选项后,我调用注册对象中的一个方法来设置粘贴板上的文本。我现在没有传递任何文本,我只是将粘贴板设置为静态文本。除了在调用应用程序中没有插入任何内容外,所有内容都正常工作。但是,如果我调用相同的方法来从服务请求者调用的方法中设置粘贴板,那么文本将正确插入调用应用程序中

我已经阅读了所有我能找到的关于服务(包括苹果文档)的内容,但它们都只处理没有用户界面的服务,或者如果它们有用户界面,界面就在流程的末尾。例如,一个选择可能是一个URL,并由服务传递给Safari,比如显示网页。在这些情况下,交互在接口(Safari)处结束。在我的例子中,接口在进程的中间,我需要把结果返回到原来的应用程序。我最初尝试在用户做出选择后在窗口控制器中设置粘贴板,但没有成功。我当时预计,如果我调用注册服务的原始对象并在那里设置粘贴板,那么它应该可以工作,但到目前为止,尽管尝试了各种不同的方法,我仍然没有在该方法上取得进展

我想我的第一个问题是,“这是我应该能够做到的吗?”换句话说,服务能否以我正在尝试的方式使用。如果答案是肯定的,那么对我的错误所在有何建议