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

Posted

技术标签:

【中文标题】在 Mac OS 上使用 swift 4 进行拖放【英文标题】:Drag and Drop using swift 4 on mac OS 【发布时间】:2017-11-16 09:03:08 【问题描述】:

我正在使用 swift 4 和 Xcode 9,但在实现拖放时遇到问题。我有一个自定义的“目的地”视图用于放置,我在 swift 3 中调用

register(forDraggedTypes: Array(NSURLPboardType))

接受包含这些类型的拖动。 我怎样才能在 swift 4 中做这样的事情? 现在我有了这段代码

registerForDraggedTypes([.pdf])

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

【问题讨论】:

【参考方案1】:

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

registerForDraggedTypes([NSPasteboard.PasteboardType(rawValue: kUTTypeFileURL as String), NSPasteboard.PasteboardType(rawValue: kUTTypeItem as String)])

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

【讨论】:

你可以用"public.file-url"代替kUTTypeFileURL as String "public.item" 而不是kUTTypeItem as String 在较新的 mac 版本上,您可以像 registerForDraggedTypes([.fileURL]) 一样进行操作

以上是关于在 Mac OS 上使用 swift 4 进行拖放的主要内容,如果未能解决你的问题,请参考以下文章

Swift 4 - 在 mac os 上使用 AVAssetWriter 进行 avfoundation 屏幕和音频录制 - 视频冻结

如何在 Mac OS X 10.5 中处理从 Finder 中的多个文件拖放?

「萌新上手Mac」关于MacBook拖放技巧

Mac OS:直接从 Swift 中的目录访问内容

pathForResource 在 Mac OS X 控制台应用程序中返回 nil — Swift

Ruby cairo gem 无法在 Mac OS X Yosemite 上安装