在mac OS上使用swift 4进行拖放

Igo*_*nko 3 macos drag-and-drop nspasteboard swift swift4

我正在使用swift 4和Xcode 9,我遇到了拖放实现的问题.我有一个自定义的'目的地'视图滴,并在swift 3我打电话

register(forDraggedTypes: Array(NSURLPboardType))
Run Code Online (Sandbox Code Playgroud)

接受包含这些类型的拖动.我如何在swift 4中做这样的事情?现在我有了这段代码

registerForDraggedTypes([.pdf])
Run Code Online (Sandbox Code Playgroud)

当我在视图中删除pdf时,没有一个NSDraggingDestination方法调用.(我的自定义视图位于顶部)

Igo*_*nko 6

所以我的同事找到了这个问题的解决方案,在swift 4中你必须使用kUTTypes作为String进行拖放,如下所示:

registerForDraggedTypes([NSPasteboard.PasteboardType(rawValue: kUTTypeFileURL as String), NSPasteboard.PasteboardType(rawValue: kUTTypeItem as String)])
Run Code Online (Sandbox Code Playgroud)

使用此代码,所有NSDraggingDestination方法都可以正常工作,您可以从视图中的finder中删除任何文件.