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

问题描述:

我想写一些绝对准系统代码,我可以将一个普通的'dot.txt'文件拖到NSWindow上并读入数据(并没有什么比这更有趣),但所有的例子,我已经能够找到使用图像和NSViews等。苹果公司的“拖动文件内容”部分在其“拖放编程主题为可可”文档确认拖到一个平原NSWindow(而不是NSView等)是可能的,似乎正在讨论我正在尝试做什么,但作为一个相对的新手,我仍然发现它对图像和框架的引用混淆。如何拖放obj-c中的'.txt'文件

任何人都可以请帮助我开始通过向我展示'registerForDraggedTypes'除了说'initWithFrame'或'initWithCoder'方法以及注册哪些类型之外的位置吗?一旦我看到窗口识别我的拖动,我可以担心其他'performDragOperation'和'draggingEntered'的东西。

感谢:-)

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

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

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

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

打开MainMenu.xib,并且会弹出Interface Builder。 在Interface Builder中,将'App Delegate'(此对象)连接到'Window'的'委托'出口。 (您可以在Inspector面板中找到'委托'插座) 现在,'应用程序委托'接收'窗口'事件消息。

,然后在同一个类文件增加了更多的方法:

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

这是OK的,你必须具有'window'出口的应用程序委托的具体情况,但通常一个窗口会被管理通过'NSWindowController',你可以在窗口控制器的'-windowDidLoad'方法中注册拖动类型。一般来说,答案是正确的。 –