防止在OSX 10.8应用程序启动时打开iCloud窗口

时间:2013-04-01 06:30:53

标签: objective-c xcode cocoa osx-mountain-lion icloud

我编写了一个使用iCloud文档存储的OSX应用程序。每当我在Mountain Lion(而不是Lion)中打开它时,会打开一个如下所示的iCloud窗口:

enter image description here

有没有办法防止在发布时发生这种情况?

更新

1)applicationShouldOpenUntitledFile:没有被调用(是的,我确定我正在听我的代表。
2)如果我强行退出应用程序,下次打开时,我没有得到对话框。但是,如果我经历了正常的退出过程,它确实会出现。

更新2(也作为答案添加,以帮助将来可能会遇到此问题的人): 重复问题中的applicationShouldOpenUntitledFile:无效。经过大量的实验,我发现如果我从NSDocumentClass数组中的Info.plist中删除CFBundleDocumentTypes键和值,则不再打开窗口。我已经在重复的问题中添加了答案。

2 个答案:

答案 0 :(得分:0)

将以下代码放入App Delegate可以绕过iCloud弹出的新文档屏幕。为High Sierra测试。

-(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];
    }
}

答案 1 :(得分:-1)

来自iCloud enabled - Stop the open file displaying on application launch?applicationShouldOpenUntitledFile:无效。经过大量实验,我发现如果我从NSDocumentClass数组中的Info.plist中删除CFBundleDocumentTypes键和值,则窗口将不再打开。