Swift 如何在拖动';n';从应用程序的Finder中删除文件
我正在尝试让我的NSView接受您可以从Finder拖放的文件 我已经检查了文档(),但唯一有效的方法是接受一个字符串 正如文档所说,我已经注册了可以删除的类型Swift 如何在拖动';n';从应用程序的Finder中删除文件,swift,cocoa,drag-and-drop,Swift,Cocoa,Drag And Drop,我正在尝试让我的NSView接受您可以从Finder拖放的文件 我已经检查了文档(),但唯一有效的方法是接受一个字符串 正如文档所说,我已经注册了可以删除的类型 func commonInit(){ let allowedDropTypes = [NSFilenamesPboardType] registerForDraggedTypes( allowedDropTypes ) Swift.print( registeredDraggedTypes ) } 如果
func commonInit(){
let allowedDropTypes = [NSFilenamesPboardType]
registerForDraggedTypes( allowedDropTypes )
Swift.print( registeredDraggedTypes )
}
如果我打印出registeredDraggedTypes,就会得到NSFilenamesPboardType
我还实现了draggingEntered(sender)
和preparefordragooperation(发送方)
和performdragooperation(发送方)
如果我运行我的应用程序,我不能从我的应用程序的Finder中删除任何文件
当我将NSStringPboardType
添加到允许的类型数组时,我可以在应用程序上拖动一段文本。然后,如果我尝试将NSPDFPboardType
添加到数组中,并在应用程序上拖动一个pdf,那么它也不起作用
我也尝试过使用UTIpublic.fileURL
,但没有效果
此外,应用程序沙箱也已关闭
我希望有人能帮助我:-)你能尝试在项目的信息列表中允许/添加你想要的文件类型吗
我认为您需要定义允许应用程序打开/处理的文件类型,尽管不能100%确定这是否与拖放相关。至少值得一试。我发现了问题所在 我的NSView将NSImageView作为子视图,这些子视图阻止了拖动操作。 我在顶部添加了一个不可见的NSView子视图,并在该视图上注册了拖动操作。现在一切正常
override func draggingEntered(sender: NSDraggingInfo) -> NSDragOperation {
Swift.print("Dragging entered")
return sender.draggingSourceOperationMask()
}
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
}