防止在OS X中启动时出现iCloud打开文件对话框

Ber*_*lue 8 macos objective-c

当您在Mac上打开基于iCloud的基于文档的应用程序而没有任何当前打开的文档时,将显示打开文件对话框.如何防止启动时出现打开的文件对话框?我有一个欢迎屏幕,我更愿意展示.

Rud*_*ela 1

为了验证您的陈述,我在 XCode 中创建了一个新的基于文档的应用程序项目并运行它。我没有看到打开文件对话框!不过,我确实打开了一个空白的新文档。这是你的意思吗?我找不到任何有记录的方法来禁止打开这个初始空白文档。我设法使用 Document 类的初始化程序通过以下 hack 来抑制此行为:

- (instancetype)init {
    self = [super init];
    if (self) {
        // Add your subclass-specific initialization here.
    }
    NSLog(@"Document init");
    if (alreadysuppressed)
        return self;
    alreadysuppressed = 1;
    return nil;
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,它使用一个变量(此处称为“alreadysuppressed”)来记住抑制是否已经完成,因此每次应用程序运行时都会执行一次。我知道这是一个黑客,但它适用于基于通用文档的应用程序。如果您确实获得了文件打开对话框而不是上述行为,那么我建议向您的应用程序委托类添加类似的 hack:

- (BOOL)applicationShouldOpenUntitledFile:(NSApplication *)sender
{
    NSLog(@"applicationShouldOpenUntitledFile: %d", alreadysuppressed);
    if (! alreadysuppressed) {
        alreadysuppressed = 1;
        return NO;
    }
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

尽管我无法测试这种情况,因为我没有在基于通用文档的应用程序中获得文件打开对话框。