如何在obj-c中拖放'.txt'文件

时间:2010-01-10 00:28:23

标签: cocoa drag-and-drop nsdragginginfo

我正在尝试编写一些完整的准系统代码,我可以将一个简单的'dot.txt'文件拖到NSWindow上并读入数据(并没有比这更好的),但所有的例子我都能够找到使用图像和NSViews等。苹果公司在“可可拖拉编程主题”文档中的“拖动文件内容”部分确认拖动到一个普通的NSWindow(而不是NSView等)是可能的,似乎在讨论正是我正在尝试做的事情,但作为一个相对新手,我仍然发现它对图像和框架的引用令人困惑。

任何人都可以帮我开始向我展示'registerForDraggedTypes'除了把它放在哪里,'initWithFrame'或'initWithCoder'方法,以及注册哪些类型?一旦我得到窗口识别我的拖动,我可以担心其他'performDragOperation'和'draggingEntered'的东西。

谢谢: - )

1 个答案:

答案 0 :(得分:6)

这是我正在处理的代码的一部分。 您可以在创建新项目时找到此方法。

-(void)applicationDidFinishLaunching:(NSNotification*)aNotification
{       
    [window registerForDraggedTypes:[NSArray arrayWithObjects:NSFilenamesPboardType, nil]]; 
}

我也是新手。无论如何,这对我有用。

然后,这很重要。 我们必须将此对象连接到window对象以处理此对象中的drop消息

打开MainMenu.xib,将弹出Interface Builder。 在Interface Builder中,将“App Delegate”(此对象)连接到“Window”的“委托”出口。 (你可以在Inspector面板中找到'delegate'插座) 现在,'App Delegate'收到'Window'的事件消息。

然后,在同一个类文件中添加更多方法:

-(NSDragOperation)draggingEntered:(id < NSDraggingInfo >)sender
{
    return NSDragOperationGeneric;
}
-(BOOL)prepareForDragOperation:(id < NSDraggingInfo >)sender
{
    NSPasteboard* pbrd = [sender draggingPasteboard];
    // Do something here.
    return YES;
}