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),becomeFirstResponder
和 resignFirstResponder
(保留视图是否为第一响应者的标志,并使用 setNeedsDisplay
或其他任何触发绘图合适的),以及绘图机制(drawRect
或者如果你使用 CALayers 的话任何合适的东西)。
覆盖 keyDown
以处理空格键。
覆盖 mouseDragged
并启动拖动会话,然后简单地创建一个 NSDraggingItem
,其中 pasteboardWriter
是 NSURL
本身。
用于显示 QuickLook:QLPreviewPanel
https://developer.apple.com/documentation/quartz/qlpreviewpanel
我有一个文件(比方说是 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),becomeFirstResponder
和 resignFirstResponder
(保留视图是否为第一响应者的标志,并使用 setNeedsDisplay
或其他任何触发绘图合适的),以及绘图机制(drawRect
或者如果你使用 CALayers 的话任何合适的东西)。
覆盖 keyDown
以处理空格键。
覆盖 mouseDragged
并启动拖动会话,然后简单地创建一个 NSDraggingItem
,其中 pasteboardWriter
是 NSURL
本身。
用于显示 QuickLook:QLPreviewPanel
https://developer.apple.com/documentation/quartz/qlpreviewpanel