Windowsソフト、iPhoneアプリ、ゲーム音楽素材の「Meteoric Stream」 -> 資料室 -> MacOSアプリ開発(Swift、Objective-C) -> Closeボタンで閉じたウインドウを再表示させる

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

この記事をシェアする

このエントリーをはてなブックマークに追加

関連記事

Meteoric Streamについて

管理人

Windowsソフト、iPhoneアプリ、ゲーム音楽素材の「Meteoric Stream」 -> 資料室 -> MacOSアプリ開発(Swift、Objective-C) -> Closeボタンで閉じたウインドウを再表示させる