2011-11-16 9 views
2

私はウェブ上をサーフィンしていて、たくさんのテキストを強調表示するたびに、コンテキストメニューに「選択した新しいTextWranglerドキュメント」という項目が表示されます。アップルのサービス実装ガイド - サンプルコードが動作しない

この機能をアプリケーションに複製するにはどうすればいいですか。ユーザーが他のアプリケーションでテキストを選択するたびに、コンテキストメニューの「新規(My App)ドキュメント選択」項目が表示され、選択したテキストをアプリに送りますか?強調表示されたテキスト上の簡単なROT13暗号化サービスを実装http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/SysServices/Articles/providing.html

は自分の質問に答えることを試みるへの更新、私はここのサンプルコードを追いました。それは動作していません。

http://i43.tinypic.com/8z38qo.jpg http://i42.tinypic.com/2z4co0o.jpg

上記のように、私の「暗号化テキストは、」「選択と新TextWranglerのドキュメント」などのシステム環境設定メニューで表示されますが、それは実際にアプリケーションのサービスメニューまたは右クリックしてコンテキストメニューに表示されますdoesntのテキストが選択されたとき。

http://i39.tinypic.com/51d06o.jpg

私のアプリ名が「simpleEncryptと呼ばれている:

誰かがリンゴのドキュメントのサンプルコードは、ここで

@PeterHoseyが機能しない理由、それはあまりにもNSRequiredContextで、ある教えてもらえますメッセージはリンゴのサービス実装ガイドからコピーされたメッセージとまったく同じです。

- (void)simpleEncrypt:(NSPasteboard *)pboard 
userData:(NSString *)userData error:(NSString **)error; 
+0

TextWranglerのプラグインを作成していますか? – Raptor

+0

私はそれを解決しました。そのすべてはここにあります:http://developer.apple.com/library/mac/#documentation/cocoa/conceptual/SysServices/introduction.html – hollow7

+0

@dragoncharmerこれはあなたが見つけてリンクしたシステムサービスです。それは正解ですので、答えとして投稿して受け入れてください! –

答えて

0

the Info.plist for my Translate Text applicationでは、それぞれのサービスの送信タイプとしてNSStringPboardTypeを使用しています。

system-declared UTIsリストには、それに相当する現代のものがpublic.utf8-plain-textであると記載されているので、サービスの送信と戻りの型をそれに変更してみてください。

うまくいけば、すべてのプレーンテキストの亜種をリストすることをお勧めします。これらは、統一タイプ識別子リファレンスにリストされています。それらはpublic.plain-textに準拠したタイプです。

0

サービスが有効になる時期が記載されているan NSRequiredContext dictionary in your service dictionaryを含める必要があります。それまでは、すべてのコンテキストでデフォルトで無効になっています。 (なぜあなたはそれを有効にした後でもまだ表示されないのか分かりませんが、これは必須の第一歩です)。

+0

あなたは正しいです。私はNSRequiredContextをインクルードしましたが、それはまだ動作しません。 – hollow7

+0

@dragoncharmer:質問を編集して、更新されたサービス辞書を追加してください。 –

+0

ok更新されたバージョンが含まれています。 – hollow7

関連する問題