Детали реализации перетаскивания пути к файлу в какао - PullRequest
0 голосов
/ 05 июня 2010

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

Я видел несколько примеров, но почти все они предполагают, что я хочу добавить изображение в представление. Я довольно новичок в какао и Xcode, поэтому у меня возникли проблемы с определением точной связи между создателем интерфейса и сгенерированным кодом.

Я создал подкласс для NSView, который называется Drop Zone следующим образом:

#import <Cocoa/Cocoa.h>

@interface dropZone : NSView {

}

@end

Затем я использую NSRect, чтобы окрасить его в серый цвет:

#import "dropZone.h"

@implementation dropZone


- (void)drawRect:(NSRect)rect
{

    NSRect bounds = [self bounds];
    [[NSColor grayColor] set];
    [NSBezierPath fillRect:bounds];
}
@end

Затем я перетаскиваю этот класс в свое окно в конструкторе интерфейсов. Но мне нужно будет реализовать метод registerForDraggingTypes, но где? Я также видел в документах Apple удобный метод для путей к файлам: dragFile:fromRect:slideBack:event:, который может работать.

Должен ли я использовать первого респондента? Метод init или как?

1 Ответ

2 голосов
/ 05 июня 2010

Вам не нужно переопределять registerForDraggedTypes:. Вы просто должны вызвать это. Однако вам придется переопределить методы, чтобы реагировать на вход в ваше представление перетаскиванием или отпускание перетаскивания и т. Д. Поэтому, если у вас есть представление, которое должно принимать капли типа MyCustomDropType, то вы делаете:

[myView registerForDraggedTypes:[NSArray arrayWithObject:MyCustomDropType]];

Тогда ваши методы перетаскивания будут срабатывать только в том случае, если было объявлено, что перетаскивание предлагает MyCustomDropType данные.

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