私が達成しようとしているもの: 数字で構成される選択を取り、ユーザーが選択できるいくつかの通貨をリストするウィンドウを提示し、選択をユーザーが選択した変換された通貨に置き換えるサービス。
問題: 事実上すべてを機能させることができます。サービスは正しく登録され、ペーストボードを介して呼び出し元のアプリケーションにテキストを返すことができますが、サービスによって呼び出されたメソッドからペーストボードの内容を設定した場合のみです。ウィンドウを開き、登録されたオブジェクトのメソッドを呼び出してテキストを返すと、何も起こりません。
サービスによって呼び出されるメソッドで、ウィンドウ コントローラーをインスタンス化し、ウィンドウを表示します。ユーザーがウィンドウで必要なオプションをクリックした後、登録済みオブジェクトのメソッドを呼び出して、ペーストボードにテキストを設定します。ペーストボードを静的なテキストに設定しただけで、現時点ではテキストを渡していません。呼び出し元のアプリケーションに何も挿入されていないことを除いて、すべてが正しく機能します。ただし、同じメソッドを呼び出して、サービス リクエスターによって呼び出されたメソッド内からペーストボードを設定すると、呼び出し元のアプリケーションにテキストが正しく挿入されます。
サービスについて見つけられるものはすべて (Apple のドキュメントを含めて) 読みましたが、それらはすべて、ユーザー インターフェイスを持たないサービス、またはユーザー インターフェイスがある場合はインターフェイスがプロセスの最後にあるサービスのみを扱います。たとえば、選択内容は URL であり、Web ページを表示するために、サービスによって Safari に渡されます。そのような場合、インタラクションはインターフェイス (Safari) で終了します。私の場合、インターフェイスはプロセスの途中にあり、結果を元のアプリケーションに戻す必要があります。ユーザーが選択した後、最初にウィンドウコントローラーにペーストボードを設定しようとしましたが、うまくいきませんでした。そのとき、サービスを登録した元のオブジェクトにコールバックしてそこにペーストボードを設定すれば、機能するはずだと期待していましたが、これまでのところ私は'
私の最初の質問は、「これは私ができるべきことですか?」ということだと思います。つまり、私が試みている方法でサービスを使用できます。答えが「はい」の場合、私のエラーがどこにあるのかについての提案はありますか?