Mac平台C#应用点击Dock无响应:窗口关闭后无法重启
Mac C#应用关闭窗口后Dock图标无响应问题解决办法
问题场景
使用Visual Studio for Mac + XCode Interface Builder开发Mac应用时,点击窗口左上角红色叉号关闭窗口后,应用仍停留在Dock中运行,但点击Dock图标无任何反应,必须彻底关闭重启才能恢复正常使用。
排查过程
- 最初怀疑是Debug构建导致问题,切换到Release构建时遇到代码签名无效错误,了解到需要Apple开发者账号账号,完成签名后问题依旧存在。
- 设备环境:Apple M1 Pro,Visual Studio for Mac 17.4.1,XCode 14.1
解决方案
方案1:关闭最后一个窗口后自动终止应用
在AppDelegate.cs中重写对应方法,实现关闭最后一个窗口时直接退出应用:
public override bool ApplicationShouldTerminateAfterLastWindowClosed(NSApplication sender) { return true; }
方案2:保留Dock运行状态,点击图标重新打开窗口
在AppDelegate.cs中重写对应方法,实现无可见窗口时点击Dock图标重新创建并显示主窗口:
public override bool ApplicationShouldHandleReopen(NSApplication sender, bool hasVisibleWindows) { if (!hasVisibleWindows) { // 加载主故事板 var sb = NSStoryboard.FromName("Main", null); // 通过Storyboard ID实例化窗口控制器,注意替换为你自己的窗口控制器ID var controller = sb.InstantiateControllerWithIdentifier("MainWindow") as NSWindowController; // 显示窗口并设为当前活跃窗口 controller.Window.MakeKeyAndOrderFront(this); } return true; }
注意:代码中的
"MainWindow"需要替换为你在Main.storyboard的窗口控制器中设置的Storyboard ID。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

