Как перетащить файл ".txt" в obj-c

Я пытаюсь написать какой-то абсолютно простой код, где я могу перетащить простой файл 'dot.txt' в NSWindow и прочитать данные (и ничего более необычного), но все примеры, которые мне удалось найти, используют изображения, NSViews и т. д. Раздел Apple "Перетаскивание содержимого файла" в документации "Перетаскивание тем программирования для какао" подтверждает, что перетаскивание в простое NSWindow (а не в NSView и т. д.) возможно, и, кажется, обсуждает именно то, что я Я пытаюсь сделать, но, как относительный новичок, я все еще нахожу его ссылку на изображения и кадры сбивают с толку.

Может кто-нибудь, пожалуйста, помогите мне начать, показывая мне, где 'registerForDraggedTypes' кроме того, чтобы поместить это, скажем, метод 'initWithFrame' или 'initWithCoder', и какие типы для регистрации? Как только у меня появится окно для распознавания моего перетаскивания, я могу беспокоиться о других вещах "executeDragOperation" и "draggingEntered" позже.

Спасибо:-)

1 ответ

Решение

Это часть кода, над которой я работаю. Вы можете найти этот метод, когда вы создали новый проект.

-(void)applicationDidFinishLaunching:(NSNotification*)aNotification
{       
    [window registerForDraggedTypes:[NSArray arrayWithObjects:NSFilenamesPboardType, nil]]; 
}

Я тоже новичок. Во всяком случае, это сработало для меня.

И потом, это важно. Мы должны подключить этот объект к объекту окна, чтобы обрабатывать сообщения отбрасывания в этом объекте

Откройте MainMenu.xib, и появится Интерфейсный Разработчик. В Интерфейсном Разработчике подключите "Делегат приложения" (этот объект) к выходу "Делегировать" окна "Окно". (Вы можете найти выход "делегат" на панели "Инспектор"). Теперь "Делегат приложения" получает сообщения о событиях "Окна".

А затем добавляет еще метод в тот же файл класса:

-(NSDragOperation)draggingEntered:(id < NSDraggingInfo >)sender
{
    return NSDragOperationGeneric;
}
-(BOOL)prepareForDragOperation:(id < NSDraggingInfo >)sender
{
    NSPasteboard* pbrd = [sender draggingPasteboard];
    // Do something here.
    return YES;
}
Другие вопросы по тегам