如果将选择的文本拖放到文件夹中,您将获得扩展名为 textClipping 的文件。 TextEdit 的文档窗口接受文本选择。许多应用程序都接受textClipping。如何在 NSImageView 下拉框中收到文本选择? performDragOperation 的常规操作似乎不接受选择的文字。
- (BOOL)performDragOperation:(id<NSDraggingInfo>)sender {
NSPasteboard *pboard = [sender draggingPasteboard];
NSArray *urls;
if ([[pboard types] containsObject:NSURLPboardType]) {
urls = [pboard readObjectsForClasses:@[[NSURL class]] options:nil];
}
AppDelegate *appDelegate = (AppDelegate *)[NSApp delegate];
...
...
return YES;
}
这些代码行让我接受文件,但不接受textClipping。接受textClipping的秘诀是什么?也许,你不能用NSImageView接受它?使用'Objective-C textClipping'运行搜索没有任何结果。
感谢您的建议。
答案 0 :(得分:2)
文本剪辑是字符串或属性字符串(如果内容包含富文本)
要从粘贴板中读取这些对象,您必须分别搜索NSStringPboardType
或NSRTFPboardType
。
NSStringPboardType
可以理解为NSString
NSRTFPboardType
可以被理解为NSAttributedString
。
- (BOOL)performDragOperation:(id<NSDraggingInfo>)sender
{
NSPasteboard* pboard = [sender draggingPasteboard];
NSArray* pboardContents = nil;
if ([[pboard types] containsObject:NSURLPboardType])
{
pboardContents = [pboard readObjectsForClasses:@[[NSURL class]] options:nil];
}
if ([[pboard types] containsObject:NSStringPboardType])
{
pboardContents = [pboard readObjectsForClasses:@[[NSString class]] options:nil];
}
if ([[pboard types] containsObject:NSRTFPboardType])
{
pboardContents = [pboard readObjectsForClasses:@[[NSAttributedString class]] options:nil];
}
NSLog(@"Pasteboard contents:%@", pboardContents);
return YES;
}