Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何在拖动';n';从应用程序的Finder中删除文件_Swift_Cocoa_Drag And Drop - Fatal编程技术网

Swift 如何在拖动';n';从应用程序的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 ) } 如果

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

我已经检查了文档(),但唯一有效的方法是接受一个字符串

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

func commonInit(){

    let allowedDropTypes = [NSFilenamesPboardType]

    registerForDraggedTypes( allowedDropTypes )

    Swift.print( registeredDraggedTypes )

}
如果我打印出registeredDraggedTypes,就会得到
NSFilenamesPboardType

我还实现了
draggingEntered(sender)

preparefordragooperation(发送方)
performdragooperation(发送方)

如果我运行我的应用程序,我不能从我的应用程序的Finder中删除任何文件

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

我也尝试过使用UTI
public.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

}