0

根据我对粘贴板工作原理的理解,当发出粘贴请求时,请求者还会指出它允许的数据类型。有没有办法在发出粘贴请求之前获取有关应用程序的信息?

4

2 回答 2

1

不,您无法获得有关应用程序可以处理哪些粘贴板类型的信息。

执行粘贴操作的应用程序并没有准确地告诉系统它接受什么数据类型。它根据某些类型过滤它接收到的数据类型列表。但是,它可以使用动态信息执行此操作,并且每次可以使用不同的数据类型集进行多次过滤。

粘贴板的 API 非常灵活。有一些高级方法,应用程序会给出一个类型(或类)列表,它可以处理并取回相关项目(或对象)。但是,还有一些低级方法,应用程序可以通过这些方法枚举所有项目及其类型,并根据它喜欢的任何逻辑选择一个。它可能永远不会将类型/类列表传递到框架中。即使它确实将类型/类列表传递到框架中,也会在应用程序内部处理。它没有与更广泛的系统共享,因为没有理由这样做。而且,如前所述,它可以是动态列表。

于 2015-01-31T04:09:20.607 回答
0

检查 NSPasteboardReading 和 NSPasteboardWriting 协议文档。

// writableTypesForPasteboard: - 返回接收者可以写入给定粘贴板的数据类型的 UTI 字符串数组

- (NSArray *)writableTypesForPasteboard:(NSPasteboard *)pasteboard

// readableTypesForPasteboard : - 返回一个数据类型的 UTI 字符串数组,接收者可以从粘贴板读取并从中初始化

+ (NSArray *)readableTypesForPasteboard:(NSPasteboard *)pasteboard

如果您需要更多详细信息,我建议阅读“粘贴板编程指南”:https ://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/PasteboardGuide106/Introduction/Introduction.html

于 2015-01-31T01:01:31.283 回答