【发布时间】:2013-05-08 20:51:08
【问题描述】:
我在主 xib (MainMenu.xib) 中有一个小窗口,其中有一个用于 OS X 应用程序的 NSImageView 控件。这个视图控件有一个 NSImageView 子类,它应该接受用户带来的文件(拖放)。由于我没有使用 Objective-C 开发 Mac 应用程序的经验,因此我四处搜索,查看了一些来自 Apple 的示例项目,并得到了一些想法。好吧,为了简单起见,我刚刚复制了here 发布的代码。有用。太好了……以下是简明版本。
- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender{
return NSDragOperationCopy;
}
- (NSDragOperation)draggingUpdated:(id <NSDraggingInfo>)sender{
}
- (void)draggingExited:(id <NSDraggingInfo>)sender{
}
- (BOOL)prepareForDragOperation:(id <NSDraggingInfo>)sender{
return YES;
}
- (BOOL)performDragOperation:(id<NSDraggingInfo>)sender {
NSPasteboard *pboard = [sender draggingPasteboard];
if ([[pboard types] containsObject:NSURLPboardType]) {
NSURL *fileURL = [NSURL URLFromPasteboard:pboard];
NSLog(@"Path: %@", [self convertPath:fileURL]); // <== That's just what I need
}
return YES;
}
- (NSString *)convertPath:(NSURL *)url {
return url.path;
}
目前,无论用户拖放到下拉框中的文件数量如何,下拉框一次只能获取一个文件路径。所以我想知道的是如何让应用程序读取用户带来的所有多个文件。
谢谢,
【问题讨论】:
标签: objective-c macos osx-mountain-lion nspasteboard nsdragginginfo