Как разрешить перетаскивание URL файлов не в файл - PullRequest
0 голосов
/ 17 сентября 2018

В веб-браузере на основе документов - 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, где указано.

Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...