在需要处理拖拽事件的控件中添加以下方法:
#pragma mark - NSDraggingDestination
- (NSDragOperation)draggingEntered:(id <NSDraggingInfo >)sender
{
NSPasteboard *pboard = [senderdraggingPasteboard];
NSArray *files = [pboardpropertyListForType:NSFilenamesPboardType];
for (NSString *filein files) {
CFStringRef UTI =UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (__bridgeCFStringRef)file.pathExtension, NULL);
Boolean conforms =UTTypeConformsTo(UTI, kUTTypeImage);
if (UTI) CFRelease(UTI);
if (conforms)return NSDragOperationCopy;
}
returnNSDragOperationNone;
}
- (BOOL)prepareForDragOperation:(id <NSDraggingInfo >)sender
{
return YES;
}
- (BOOL)performDragOperation:(id <NSDraggingInfo >)sender
{
NSPasteboard *pboard = [senderdraggingPasteboard];
NSString *file = [pboardpropertyListForType:NSFilenamesPboardType][0];
self.image = [[NSImagealloc] initWithContentsOfFile:file];
return (self.image !=nil);
}