Если есть подлинная причина, по которой вы должны предотвратить перетаскивание изображений за пределы приложения, тогда вам следует объявить свой собственный 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 ожидают, что перетаскивание «просто сработает», и, сломав его, вы сделаете свое приложение выдающимся, и не очень хорошим способом.