gpt4 book ai didi

swift - 当您从应用程序上的 Finder 拖放文件时如何获取文件名

转载 作者:搜寻专家 更新时间:2023-11-01 07:29:44 26 4
gpt4 key购买 nike

我正在尝试让我的 NSView 接受您可以从 Finder 中拖放的文件。

我已经检查了文档 ( https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/DragandDrop/Tasks/acceptingdrags.html#//apple_ref/doc/uid/20000993-BABHHIHC ),但唯一可行的是接受一串字符串。

正如文档所说,我已经注册了可以删除的类型

func commonInit(){

let allowedDropTypes = [NSFilenamesPboardType]

registerForDraggedTypes( allowedDropTypes )

Swift.print( registeredDraggedTypes )

}

如果我打印出 registeredDraggedTypes,我得到 NSFilenamesPboardType

我还实现了draggingEntered(sender)

override func draggingEntered(sender: NSDraggingInfo) -> NSDragOperation {

Swift.print("Dragging entered")

return sender.draggingSourceOperationMask()

}

以及prepareForDragOperation(sender)performDragOperation(sender)

override func prepareForDragOperation(sender: NSDraggingInfo) -> Bool {

Swift.print("Prepare for drag operation")

return true

}

override func performDragOperation(sender: NSDraggingInfo) -> Bool {

Swift.print("Perform for drag operation")

return true

}

如果我运行我的应用程序,我无法将任何文件从 Finder 拖放到我的应用程序上。

当我将 NSStringPboardType 添加到允许类型的数组时,我可以在应用程序上拖动一段文本。如果我随后尝试将 NSPDFPboardType 添加到数组并在应用程序上拖动 pdf,它也不起作用。

我也尝试过使用 UTI public.file-url,但无济于事。

此外,应用沙箱已关闭。

我希望有人能帮助我 :-)

最佳答案

我发现了问题所在。

我的 NSView 有 NSImageViews 作为 subview ,它们阻止了拖动操作。我在顶部添加了一个不可见的 NSView subview ,并在该 View 上注册了拖动操作。现在一切正常。

关于swift - 当您从应用程序上的 Finder 拖放文件时如何获取文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33387076/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com