2

使用 NSSavePanel 后,我在关闭我的应用程序时遇到问题...如果我打开应用程序,使用它然后关闭它,它会以正确的方式关闭...我在 appdelegate 中有这段代码可以让我的应用关闭

- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender
 {
   return YES;
 }

但是如果我只是打开面板来保存一个 txt 文件......使用 NSSavePanel......如果我只是打开它而不使用它......点击“取消”按钮,我的应用程序不再关闭...如果我单击红色 x 关闭应用程序,窗口会消失,但应用程序仍处于活动状态,并且无法恢复主窗口。我用来保存我的 txt 文件的代码是这样的:

NSSavePanel *save = [NSSavePanel savePanel];

if (nomePartita != nil) 
{
    [save setNameFieldStringValue:nomePartita];
}

[save setAllowedFileTypes:[NSArray arrayWithObject:@"dat"]];
[save setAllowsOtherFileTypes:NO];

NSInteger result = [save runModal];    

if (result == NSOKButton)
{
 // code to save the file here.....
 }

问题必须在这一行中,因为仅此(我的意思是没有用于创建和保存 txt 文件的其余代码)我遇到了这个问题...任何人都知道为什么会发生这种情况?任何提示将不胜感激!非常感谢,和平,马西

4

1 回答 1

0

尝试这个:

   NSSavePanel*    panel = [NSSavePanel savePanel];
   [panel setNameFieldStringValue:newName];
   [panel beginSheetModalForWindow:[self window] completionHandler:^(NSInteger result){
        if (result == NSFileHandlingPanelOKButton)
        {
            NSURL*  theFile = [panel URL];
            // Write the contents in the new format.
        }
}];

我遇到了同样的问题,这解决了它。对于窗口,您也可以使用 [NSApp keyWindow]

Apple 沙盒指南

于 2012-06-22T15:18:46.793 回答