Как отключить перетаскивание из моего приложения Какао? - PullRequest
1 голос
/ 03 января 2012

У меня есть приложение Cocoa Mac, которое использует перетаскивание внутри приложения.Я хочу отключить перетаскивание таких вещей, как изображения, из моего приложения в другие приложения, такие как Finder.Есть ли способ сделать это?

1 Ответ

1 голос
/ 03 января 2012

Если есть подлинная причина, по которой вы должны предотвратить перетаскивание изображений за пределы приложения, тогда вам следует объявить свой собственный UTI в своем Info.plist, который вы можете использовать в качестве типа перетаскивания для внутреннего-только перетаскивает.

Затем вы указываете свой пользовательский UTI при объявлении типов картона.Например, в вашем представлении, которое поддерживает перетаскивание:

//the UTI string should match the one in your Info.plist
static NSString* kYourCustomUTIType = @"com.yourCompany.internalDragType";

- (void)mouseDown:(NSEvent *)theEvent
{
    NSSize dragOffset = NSZeroSize;
    NSPasteboard *pboard = [NSPasteboard pasteboardWithName:NSDragPboard];

    [pboard declareTypes:[NSArray arrayWithObject:kYourCustomUTIType] owner:self];
    [pboard setData:[[self image] TIFFRepresentation] forType:kYourCustomUTIType];

    [self dragImage:[self image] at:[self imageLocation] offset:dragOffset
        event:theEvent pasteboard:pboard source:self slideBack:YES];

    return;
}

Конечно, вам нужно убедиться, что ваше место назначения перетаскивания также понимает ваш внутренний тип перетаскивания.

В общем,однако, если у вас нет реальной причины, по которой изображения не следует перетаскивать за пределы приложения, вам следует просто разрешить поведение по умолчанию.Пользователи Mac ожидают, что перетаскивание «просто сработает», и, сломав его, вы сделаете свое приложение выдающимся, и не очень хорошим способом.

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