Drag and Drop для открытия текстовых файлов в NSTextView и NSTableView в macOS


#1

Коллеги, подскажите как сделать Drag and Drop для открытия текстовых файлов в NSTextView и NSTableView.


#2

Для получения 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 можно было бы автоматически запустить парсер код для открытия тестового файла ?


#3

Хотя была отметка об ответе на вопрос (я ее убрал), это не совсем верно. Да, получить URL можно, но вопрос был в том как открыть файл для этого URL после Drop !

Как сделать так чтобы после Drop выполнялся код (открывающий файл) в контролере по полученному URL файла ?


#4

В моей программе есть @IBAction функция привязанная к buttión, код этой функции открывает текстовые файлы с различными расширениями. В Xcode есть возможность сделать link от одного button на другой button и таким образом активировав один button выполнить код для другого button. Можно ли подобное сделать с Drag and Drop, т.е. как то сделать линк от Drag and Drop активирующему @IBAction функцию привязанную к buttión открывающему файлы ?