7

Cocoa は初めてで、NSAttributedString をペーストボードにコピーする方法を見つけようとしています。ドキュメントを調べましたが、NSPasteboardItem を使用する必要があるかどうかわかりません。

通常の NSString をコピーする必要があるのは次のとおりです。

NSPasteboard *pb = [NSPasteboard generalPasteboard];
NSArray *types = [NSArray arrayWithObjects:NSStringPboardType, nil];
[pb declareTypes:types owner:self];

[pb setString:@"asdfasdf" forType:NSStringPboardType];

NSAttributedString を設定するにはどうすればよいですか?

ありがとう

4

3 に答える 3

10

Snow Leopard の時点では、NSAttributedString (AppKit で起動した場合) はNSPasteboardWritingに準拠しているため、次のように簡単に実行できます。

[pb clearContents];
[pb writeObjects:arrayOfAttributedStrings];

ペーストボードに配置したい属性付き文字列が 1 つしかない場合は、NSArray にarrayWithObject:メッセージを送信できます。

[2013 年以降の編集: または、光沢のある新しい@[ myAttributedString ]構文を使用します。このコンテキストでは、すべてのオブジェクトが NSPasteboardWriting に準拠する必要がありますが、任意の数のオブジェクトに対して機能します。]

これは NSString にも当てはまります。「NSPasteboardWriting」の AppKit ヘッダーを検索して、それをサポートするすべての標準 Cocoa クラスを見つけます。

于 2010-04-06T13:56:24.287 に答える
6

NSRTFPboardType または NSRTFDPboardType と、NSAttributedString のRTFFromRange:documentAttributes:/RTFDFromRange:documentAttributes:およびsetDataペーストボードが必要です。

于 2010-04-05T22:09:09.273 に答える