objective-c – 当文件,图片等放在其dock图标上时,如何使OS X应用程序作出反应?

objective-c – 当文件,图片等放在其dock图标上时,如何使OS X应用程序作出反应?,第1张

概述一些应用程序,如Photoshop,允许用户从Web浏览器拖动图片,或将文件从文件系统拖动到Dock中的应用程序的图标上.这样做会打开该应用程序中的文件. 这怎么做?我想使用Cocoa和Objective-C,但我对任何语言的任何解决方案感兴趣. NSApplication允许您为应用程序设置委托.如果用户将文件拖放到您的dock图标上,NSApplication将调用该方法 - (BOOL)ap 一些应用程序,如Photoshop,允许用户从Web浏览器拖动图片,或将文件从文件系统拖动到Dock中的应用程序的图标上.这样做会打开该应用程序中的文件.

这怎么做?我想使用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应用程序作出反应?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1030515.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存