使用NSSavePanel后App不会关闭

时间:2012-06-02 21:57:43

标签: objective-c nssavepanel

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

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

但是如果我只是打开面板来保存txt文件...使用NSSavePanel ...如果我只是打开它并且不使用它...单击“取消”按钮,我的应用程序没有t关闭...如果我点击红色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文件)我有这个问题... 任何人都知道为什么会发生这种情况? 任何提示都将非常感谢! 非常感谢, 和平, 马西

1 个答案:

答案 0 :(得分: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 guideline with sandboxing