0

属性付きの文字列をペーストボードに置く Mac スタンドアロン サービスを作成しています。データがページからアクセスされると、文字列はその属性を失います。NSReturnTypes 値を NSStringPboardType に設定して、次のコードを使用して文字列を貼り付けています。

    NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:@"Yay, I'm a string"];

[str beginEditing];

[str addAttribute:NSUnderlineStyleAttributeName
               value:[NSNumber numberWithInt:NSUnderlineByWord]
               range:NSMakeRange(0,str.length)];

[str endEditing];

[pboard clearContents];
[pboard writeObjects:[NSArray arrayWithObject:str]];

メモやメールなどの iWork 以外のアプリケーションは属性を問題なく処理できますが、ページはそれらを削除することを主張します。ページ、キーノート、数字で処理できるペーストボード データを作成するにはどうすればよいですか?

更新:どうやら iWork は、ドキュメント内の既存のテキストに貼り付けられたテキストの最初の改行まで現在のスタイルを適用します。段落スタイルがこの背後にあると想定していますが、ここで助けていただければ幸いです。

UPDATE2:ページがクリップボードからデータを受け取る方法にバグがあるようです。

4

2 に答える 2

1

まだ誰もあなたに何も提供していないので、ここに答えではなくアプローチがあります:

段落スタイルがこの背後にあると想定していますが、ここで助けていただければ幸いです。

仮定しないで、テストしてください。

クリップボードにあるものを調べることができる簡単なアプリを作成します。次に、TextEdit & Pages を開き、アプリ内およびアプリ間でコピー & ペーストします。クリップボードにあるものを参照してください。Pages は、「貼り付けてスタイルに合わせる」が選択されていない場合でも、ある程度の「スタイルに合わせて」貼り付けを行います。

もちろん、 TextEdit (または Word など) から Pagesにコピーするときにわかるように、この問題はアプリに限定されないことに注意してください。あなたの目的は、ページからページへのコピーと貼り付けを複製することであるように見えますが、それが可能である場合と不可能である場合があります。

補遺

クリップボードの表示についてヘルプが必要な場合は、Apple にそれを行うためのサンプル コードClipboardViewerがあります。TextEdit と Pages からコピーした下線付きの単語を比較してください。iWork 固有のデータ型など、かなりの違いがあります。

HTH

于 2016-11-18T09:30:27.427 に答える