Как перетащить файл «.txt» в obj-c - PullRequest
5 голосов
/ 10 января 2010

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

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

Спасибо: -)

1 Ответ

6 голосов
/ 10 января 2010

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

-(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;
}
...