objective-c – 为什么NSApplicationDelegate方法openFiles:多次拖动到停靠图标时被多次调用?

objective-c – 为什么NSApplicationDelegate方法openFiles:多次拖动到停靠图标时被多次调用?,第1张

概述我有一个Mac OS X应用程序,它实现了 – (void)应用程序openFiles:方法来响应应用程序图标上的拖动文件.我在目标信息设置的文档类型部分中有一个允许的文件类型列表,并且Finder确实允许拖动,但是当pdf在拖动项目列表中时,我的委托方法被调用两次:一个用于所有元素而没有pdf,仅用于PDF.这当然使我无法正确处理这种情况.任何人都可以帮助我或解释发生了什么?谢谢 我在我的一个应 我有一个Mac OS X应用程序,它实现了 – (voID)应用程序openfiles:方法来响应应用程序图标上的拖动文件.我在目标信息设置的文档类型部分中有一个允许的文件类型列表,并且Finder确实允许拖动,但是当pdf在拖动项目列表中时,我的委托方法被调用两次:一个用于所有元素而没有pdf,仅用于pdf.这当然使我无法正确处理这种情况.任何人都可以帮助我或解释发生了什么?谢谢解决方法 我在我的一个应用程序中看到过这种行为(通常在同时拖动一大堆文件时).当我解决方法时,不是直接从应用程序打开文件:openfiles:,我将它们排队并在一小段延迟后打开排队的文件.类似于以下内容:

- (voID) application:(NSApplication*)sender openfiles:(NSArray*)filenames{    // I saw cases in which dragging a bunch of files onto the app    // actually called application:openfiles several times,resulting    // in more than one window,with the dragged files split amongst them.    // This is lame.  So we queue them up and open them all at once later.    [self queuefilesForopening:filenames];    [NSApp replyToOpenorPrint:NSApplicationDelegateReplySuccess];}- (voID) queuefilesForopening:(NSArray*)filenames{    [self.filesToOpen addobjectsFromArray:filenames];    [self performSelector:@selector(openQueuedfiles) withObject:nil afterDelay:0.25];}- (voID) openQueuedfiles{    if( self.filesToOpen.count == 0 ) return;    [self makeNewWindowWithfiles:self.filesToOpen];    [self.filesToOpen removeAllObjects];}
总结

以上是内存溢出为你收集整理的objective-c – 为什么NSApplicationDelegate方法openFiles:多次拖动到停靠图标时被多次调用?全部内容,希望文章能够帮你解决objective-c – 为什么NSApplicationDelegate方法openFiles:多次拖动到停靠图标时被多次调用?所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存