Коллеги, подскажите как сделать Drag and Drop для открытия текстовых файлов в NSTextView и NSTableView.
Drag and Drop для открытия текстовых файлов в NSTextView и NSTableView в macOS
Для получения URL файла сделал следущий MytextView как NSTextView subclass
class MytextView: NSTextView
{
var fileURL: URL?
required init?(coder: NSCoder)
{
super.init(coder: coder)
register(forDraggedTypes: [NSFilenamesPboardType, NSURLPboardType])
}
override func performDragOperation(_ sender: NSDraggingInfo) -> Bool
{
let pboard: NSPasteboard? = sender.draggingPasteboard()
if (pboard?.types?.contains(NSURLPboardType))!
{
fileURL = NSURL(from: pboard!)! as URL
}
return true
}
}
Имеем также для mytext
@IBOutlet var mytext : MytextView!
Соотвественно, можем получить URL когда совершаем Drag and Drop - fileURL
Этот fileURL можем использовать чтобы открыть наш файл.
let fileToOpenURL = mytext. fileURL
Проблема в том в каком методе в контроллере это можно сделать. Если бы был Notification для PasterBoard тогда можно было бы через это Notification, но в macOS нет такого Notification, для iOS есть - https://developer.apple.com/reference/uikit/uipasteboard
Что использовать чтобы после получения fileURL после drag and Drop можно было бы автоматически запустить парсер код для открытия тестового файла ?
Хотя была отметка об ответе на вопрос (я ее убрал), это не совсем верно. Да, получить URL можно, но вопрос был в том как открыть файл для этого URL после Drop !
Как сделать так чтобы после Drop выполнялся код (открывающий файл) в контролере по полученному URL файла ?
В моей программе есть @IBAction функция привязанная к buttión, код этой функции открывает текстовые файлы с различными расширениями. В Xcode есть возможность сделать link от одного button на другой button и таким образом активировав один button выполнить код для другого button. Можно ли подобное сделать с Drag and Drop, т.е. как то сделать линк от Drag and Drop активирующему @IBAction функцию привязанную к buttión открывающему файлы ?