这怎么做?我想使用Cocoa和Objective-C,但我对任何语言的任何解决方案感兴趣.
解决方法 NSApplication允许您为应用程序设置委托.如果用户将文件拖放到您的dock图标上,NSApplication将调用该方法- (BOol)application:(NSApplication *)theApplication openfile:(Nsstring *)filename
的代理对象,以防其实现任何此类方法.如果内容不是真正的文件(例如,如果用户只是在应用程序中选择文本并将其拖放到您的Dock图标上),则委托方法
- (BOol)applicationopenUnTitledfile:(NSApplication *)theApplication
叫做.
见NSApplication class reference
基本上你可以创建任何类型的任何对象(例如,一个简单的,继承NSObject的对象),定义对象内的上述两个方法,然后在您启动的应用程序的代码中的任何位置
whatever = [[YourObject alloc] init];[[NSApplication sharedApplication] setDelegate:whatever];
就是这样一旦文件或其他内容被丢弃到dock图标上,调用相应的方法,并且必须处理该请求.如果您的应用程序与文件类型(例如.myfileType)关联,并且用户在Finder中双击具有该扩展名的文件,则BTW将调用相同的方法.
幕后真正发生的是启动服务发送您的申请一个“开放文件”(‘odoc’)苹果事件.默认情况下,NSApplication为该事件注册一个句柄,并通过调用相应的委托方法转发该请求.你也可以直接听这个苹果事件我猜,但为什么会这样?直接处理苹果事件是尴尬的.当您的应用程序不是Cocoa,但是Carbon(普通C),您可能需要直接处理Apple Event(我不熟悉Carbon),但在Cocoa Apple中,Apple已经为您提供了最重要的Apple Events,并将其转换进入您的应用程序可以收听的委托电话或通知.
总结以上是内存溢出为你收集整理的objective-c – 当文件,图片等放在其dock图标上时,如何使OS X应用程序作出反应?全部内容,希望文章能够帮你解决objective-c – 当文件,图片等放在其dock图标上时,如何使OS X应用程序作出反应?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)