![](/img/trans.png)
[英]macOS SwiftUI application - Get URL from Drag and drop Finder Files onto Dock or View
[英]How to get filenames when you drag'n'drop files from Finder on your app
我試圖讓我的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
得到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作為子視圖,這些視圖阻止了拖動操作。 我在頂部添加了一個不可見的NSView子視圖,並在該視圖上注冊了拖動操作。 現在一切正常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.