一般的な NSPasteboardの完全なコンテンツを、指定された名前のペーストボードにコピーする必要があります。私はこのコードを試しました:
- (void)copyFromGeneralPasteboard {
NSMutableArray *archive = [[NSMutableArray alloc] init];
NSArray *typeArray = [[NSPasteboard generalPasteboard] types];
NSPasteboard *myPasteboard = [NSPasteboard pasteboardWithName:@"SpecialPb"];
[myPasteboard declareTypes:typeArray owner:self];
for (NSPasteboardItem *item in [[NSPasteboard generalPasteboard] pasteboardItems])
{
NSPasteboardItem *archivedItem = [[NSPasteboardItem alloc] init];
for (NSString *type in [item types])
{
NSData *data=[[item dataForType:type] mutableCopy];
if (data) {
[archivedItem setData:data forType:type];
}
}
[archive addObject:archivedItem];
}
[[NSPasteboard generalPasteboard] clearContents];
[myPasteboard writeObjects:archive];
[archive removeAllObjects];}
このコードを使用して確認しています。
- (void)SendToGeneralPasteboard {
NSMutableArray *archive = [[NSMutableArray alloc] init];
for (NSPasteboardItem *item in [[NSPasteboard pasteboardWithName:@"SpecialPb"] pasteboardItems])
{
NSPasteboardItem *archivedItem = [[NSPasteboardItem alloc] init];
for (NSString *type in [item types])
{
NSData *data=[[item dataForType:type] mutableCopy];
if (data) {
[archivedItem setData:data forType:type];
}
}
[archive addObject:archivedItem];
}
[[NSPasteboard generalPasteboard] writeObjects:archive];}
そこで、IWork Pages を使用してテストを行ったところ、テキストと属性付きテキストで動作しました。しかし、テキストと画像で実行しようとすると、プログラムはテキストをコピーして貼り付けるだけです。その上、画像だけを使って実行しようとしましたが、うまくいきました。私のコードをあらゆる種類のデータで使用する方法を教えてください。ありがとう。