Closeボタンで閉じたウインドウを再表示させる
Design Preamble
The user interface of your app is not consistent with the macOS Human Interface Guidelines.
Specifically, we found that when the user closes the main application window there is no menu item to re-open it.
・・・みたいなエラーで怒られて、
初のMacアプリがRejectされてしまったので、
Closeボタンで閉じたウインドウを、
Doc上のアイコンをタップする事で開けるようにしました。
ネットで探すと、Objective-Cのコードしか無かったので、
Swift用にアレンジしてみました。
AppDelegate.swiftに、以下のコードを追記。
func applicationShouldHandleReopen(_ sender: NSApplication, hasVisibleWindows flag: Bool) -> Bool {
if(!flag){
for window in sender.windows{
window.makeKeyAndOrderFront(self);
}
}
return true;
}
ちなみに、Objective-Cの場合は、下記コード。
- (BOOL) applicationShouldHandleReopen:(NSApplication *)sender hasVisibleWindows:(BOOL)flag{
if(!flag){
for(NSWindow *_window in [[NSApplication sharedApplication] windows]){
[_window makeKeyAndOrderFront:self];
}
}
return true;
}
特定のウインドウのみ表示すれば良い場合は、
下記のような感じ。
- (BOOL) applicationShouldHandleReopen:(NSApplication *)sender hasVisibleWindows:(BOOL)flag{
if(!flag){
[window makeKeyAndOrderFront:self];
}
return true;
}
最初に記事を書いた日:2017/08/26