Macos NSView是否可以请求所有拖动类型?

Macos NSView是否可以请求所有拖动类型?,macos,cocoa,drag-and-drop,nsview,Macos,Cocoa,Drag And Drop,Nsview,苹果的剪贴板查看器应用程序在实现复制和粘贴时非常有用。我想有一个类似的东西拖放,但我不知道如何开始 通常,实现drop目标的第一步是让您的NSView调用-registerForDragedTypes。有没有办法声明您希望接收所有可能类型的投递?或者,是否有一个较低级别的API可以用来获取粘贴板,而无需先进行专门注册?我不是100%确定它在所有情况下都能正常工作,但我已经成功地使用了类似于: [self registerForDraggedTypes: @[(NSString*)kUTTypeI

苹果的剪贴板查看器应用程序在实现复制和粘贴时非常有用。我想有一个类似的东西拖放,但我不知道如何开始


通常,实现drop目标的第一步是让您的NSView调用
-registerForDragedTypes
。有没有办法声明您希望接收所有可能类型的投递?或者,是否有一个较低级别的API可以用来获取粘贴板,而无需先进行专门注册?

我不是100%确定它在所有情况下都能正常工作,但我已经成功地使用了类似于:

[self registerForDraggedTypes: @[(NSString*)kUTTypeItem]];

还要查找其他类型的项目。

我认为你的思路是正确的。这几乎适用于所有情况,可能是我们所能做的最好的。例如,从字体手册中拖动字体不会触发它,但我也找不到任何其他接受字体的应用程序,因此我怀疑这是一个“dyn”。第三方应用程序也无法依赖的UTI。为了完整性,最好包括所有8个“UTI抽象类型”和9个“UTI具体类型”(“大多数其他类型标识符都是从中派生出来的”--事实上,这17个类型中只有7个是根UTI,而且似乎没有任何方法可以获得“所有根UTI”),尽管在实践中我还没有发现任何与kUTTypeItem不匹配的东西(除了可能是“dyn.”类型的东西)。你说的“粘贴板标识符”是什么意思?啊,对不起,忽略粘贴板标识符垃圾。这是复制的代码,我除了kUTTypeItem之外还注册了自己的UTI,我不想去想它为什么会出现(只是让这个答案更通用)。