相关疑难解决方法(0)

Swift:在窗口中通过拖放打开文件

在Swift中,如何在Mac应用程序的窗口中构建一个区域,用户可以将文件夹拖放到此区域,并让我的应用程序接收文件夹的路径?

原则上,在我看来,这是与Apple的CocoaDragAndDrop示例应用程序类似的概念.我试图通过理解源代码来解决问题,但应用程序是用Objective-C编写的,我没有成功地在我正在构建的应用程序中复制其功能.

先感谢您.

macos swift

6
推荐指数
1
解决办法
4749
查看次数

读取多个拖拽的文件

我在主xib(MainMenu.xib)中有一个小窗口,带有一个用于OS X应用程序的NSImageView控件.这个视图控件有一个NSImageView子类,它应该接受用户带来的文件(拖放).由于我没有使用Objective-C开发Mac应用程序的经验,所以我一直在搜索,查看Apple的一些示例项目,并得到一些想法.好吧,为了简短起见,我刚刚复制了这里发布的代码.有用.太棒了......以下是简洁版.

- (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;
}
Run Code Online (Sandbox Code Playgroud)

目前,下拉框仅一次获取一个文件路径,而不管用户拖放到下拉框中的文件数量.所以我想知道的是如何让应用程序读取用户带来的所有多个文件.

谢谢,

macos objective-c nspasteboard osx-mountain-lion nsdragginginfo

3
推荐指数
1
解决办法
1540
查看次数