В веб-браузере на основе документов - SimpleViewer , в котором имеется значок документа в строке заголовка, я хотел бы перехватить не файл: URL-адреса схемы перетаскивают исключения, чтобы позволить пользователю использовать тот же пользовательский интерфейс дляперетащите URL-адрес в виде строки webloc для хранения Finder.
Я не видел, где я могу перехватить перетаскивание документа, но благодаря предложению делегата я придумал следующее:
func window(_ window: NSWindow, shouldDragDocumentWith event: NSEvent, from dragImageLocation: NSPoint, with pasteboard: NSPasteboard) -> Bool {
if let dragImage = self.snapshot {
// Replace string with our URL string
let urlString = String(format: """
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
<plist version=\"1.0\">
<dict>
<key>URL</key>
<string>%@</string>
</dict>
</plist>
""", ((document as! Document).fileURL?.absoluteString)!)
pasteboard.setString(urlString, forType: NSPasteboardTypeString)
window.drag(dragImage, at: dragImageLocation, offset: NSZeroSize, event: event, pasteboard: pasteboard, source: self, slideBack: true)
}
return false
}
где я могу получить строку в жизнеспособных каплях, но я хочу дать обещание.На монтажном столе находится public.url - file: ///, но я хочу подражать тому, что делает Safari, когда ссылка на веб-сайт перетаскивается из браузера.
Я думал принять новую предоставленную FilePromise,добавив такой элемент, но затем мое перетаскивание показывает (2) неправильные элементы.
Как я могу, но точки останова никогда не называются, поэтому я поступаю неправильно.Я просто хочу указать обещание написать вышеуказанную строку в виде файла .webloc, где указано.
Есть идеи?