NSURL/File QuickLook 预览和 NSURL/File 拖动的实现

Implementation of NSURL/File QuickLook Preview & NSURL/File dragging

我有一个文件(比方说是 PDF)已存储到我的 macOS Cocoa 应用程序的磁盘上。我有包含此文件路径的 NSURL。

我目前正在使用 NSView 向用户显示此文件存在,其中包含显示文件名的标签和 NSImageView,显示文件的图标(使用 NSWorkspace.shared.icon(forFile:url.path)).

我的问题是,我怎样才能允许用户 'select' 或 'highlight' 这个 NSView 并且当 space 栏键被点击时弹出该特定的 QuickLook 预览文件。

此外,我如何让 NSView 可拖动,最终结果是能够将 NSView 拖动到 Finder window 并将文件复制到拖动的目的地。

对于 QuickLook 和拖动功能,我浏览了 Apple 文档,但没有找到任何准确描述我所追求的内容。

对于 "selecting" 视图,您应该让视图接受第一响应者,并在视图成为第一响应者时绘制聚焦环(或任何适合您的突出显示)。覆盖 acceptsFirstResponder(return true),becomeFirstResponderresignFirstResponder(保留视图是否为第一响应者的标志,并使用 setNeedsDisplay 或其他任何触发绘图合适的),以及绘图机制(drawRect 或者如果你使用 CALayers 的话任何合适的东西)。

覆盖 keyDown 以处理空格键。

覆盖 mouseDragged 并启动拖动会话,然后简单地创建一个 NSDraggingItem,其中 pasteboardWriterNSURL 本身。

用于显示 QuickLook:QLPreviewPanel https://developer.apple.com/documentation/quartz/qlpreviewpanel