2013-04-01 30 views
11

我已经编写了一个使用iCloud文档存储的OSX应用程序。每当我在山狮(不是狮子)打开它,一个iCloud的窗口打开,如下所示:阻止在OSX 10.8上打开iCloud窗口应用程序启动

enter image description here

有没有办法来防止这种情况发生在启动?

更新:

1)applicationShouldOpenUntitledFile:是没有得到所谓的(是的,我敢肯定,我在我的代表听取
2)如果我强制退出应用程序,它打开了下一次。 ,我没有得到对话。但是,如果我经历了正常的退出过程,它确实会出现。

更新2(还添加了一个答案,以帮助可能会在未来过这个问题绊倒人): 的由重复的问题applicationShouldOpenUntitledFile:不能正常工作。经过大量实验后,我发现如果我从CFBundleDocumentTypes阵列的Info.plist中删除NSDocumentClass键和值,该窗口不再打开。我也为重复问题添加了答案。

+0

[请问此相关的问题对你有答案吗?](http://stackoverflow.com/questions/13825228/icloud-enabled-stop-the-open-file-displaying-on-application-launch ?rq = 1) –

+0

否 - 虽然症状相似,但建议的解决方案不起作用。在我的应用程序 - (BOOL)applicationShouldOpenUntitledFile:(NSApplication *)发件人不被系统调用。 –

+0

我建议你回答你自己的问题。以上更新2真的是一个答案。你可以回答它,在这一刻,等待1天后,你可以接受它。 –

回答

-1

applicationShouldOpenUntitledFile:iCloud enabled - Stop the open file displaying on application launch?不起作用。经过大量实验后,我发现如果我从阵列中的Info.plist中删除NSDocumentClass键和值,该窗口不再打开。

+0

当我删除那个makeWindowControllers的NSPersistentDocument子类仍然不被调用。只有当我禁用iCloud时,它才隐藏该窗口并调用makeWindowControllers – coolcool1994

0

将下面的代码放在您的应用程序委托中,您可以绕过该iCloud弹出新文档屏幕。测试高山脉。

-(void)applicationDidFinishLaunching:(NSNotification *)notification 
{ 
    // Schedule "Checking whether document exists." into next UI Loop. 
    // Because document is not restored yet. 
    // So we don't know what do we have to create new one. 
    // Opened document can be identified here. (double click document file) 
    NSInvocationOperation* op = [[NSInvocationOperation alloc]initWithTarget:self selector:@selector(openNewDocumentIfNeeded) object:nil]; 
    [[NSOperationQueue mainQueue] addOperation: op]; 
} 

-(void)openNewDocumentIfNeeded 
{ 
    NSUInteger documentCount = [[[NSDocumentController sharedDocumentController] documents]count]; 

    // Open an untitled document what if there is no document. (restored, opened).  
    if(documentCount == 0){ 
     [[NSDocumentController sharedDocumentController]openUntitledDocumentAndDisplay:YES error: nil]; 
    } 
} 
相关问题