【发布时间】:2015-10-28 09:17:53
【问题描述】:
我正在尝试让我的 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 )
}
如果我打印出注册的DraggedTypes,我会得到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,但无济于事。
此外,应用沙盒功能已关闭。
希望有人能帮帮我:-)
【问题讨论】:
标签: swift cocoa drag-and-drop