2011-10-19 66 views
3

与此类似问题,我在前面贴:Handle a WPF Exit Event处理一个退出的MonoMac /关闭窗口事件

我发现a solution in Objective C,但我不熟悉如何端口单。

编辑

我发现我可以使用以下重写做什么我想:

NSApplicationTerminateReply ApplicationShouldTerminate (NSApplication sender) 

然而,有一个问题,现在如果我关闭主窗口,因为这实际上是我想要开始调用应用程序退出。我已经有一个覆盖ApplicationShouldTerminateAfterLastWindowClosed返回true,所以正在调用终止覆盖。但是当我返回Cancel时,应用程序正在运行,无窗口。有没有办法拦截窗户关闭事件?

回答

4

这就是我最终做的。我创建MainWindowDelegate称为一个新的类:

public class MainWindowDelegate : MonoMac.AppKit.NSWindowDelegate 
{ 
    public override WindowShouldClose (MonoMac.Foundation.NSObject sender) 
    { 
     return false; 
    } 
} 

然后,在我的MainWindowController类:

public class MainWindowController 
{ 
    private MainWindowDelegate _delegate; 

    // Shared initialization code 
    void Initialize() 
    { 
     _delegate = new MainWindowDelegate(); 
    } 

    public override void WindowDidLoad() 
    { 
     Window.Delegate = _delegate; 
    } 
}