多窗口macOS应用程序:单击关闭打开下一个窗口(不要这样)

时间:2017-08-04 22:20:17

标签: swift macos cocoa nswindow nswindowcontroller

为了澄清标题的含义,我目前正致力于一个可视化通知用户事件的应用程序,并确保用户看到通知,我们使用自定义Toast通知。我在网上搜索解决方案时经常发现的是使用NSUserNotification,这不是我想要的。我需要一个我们可以完全自定义的自定义通知。我想要的一个例子是Microsoft Outlook的Reminders窗口 enter image description here此窗口应与主应用程序完全分开,并且应始终可见,即使其他应用程序不可见。但是如果你单击“关闭”,窗口就会消失,你可以继续做你正在做的事情。

此Reminders窗口执行的关键操作是我想要的,而我遇到的主要问题是找不到解决方案: 如果单击左上角的红色关闭按钮,则不会显示与应用程序关联的下一个窗口。

这是特别好的,因为像outlook的“Dismiss”按钮,当用户点击它时,我不想提出完整的应用程序,这是我的应用程序当前的功能。大声笑,我点击我的吐司通知点击它是非常可怕的,它带来了完整的应用程序!

为了向您展示我的意思,如果您打开任何多窗口应用程序(如Finder),打开2个窗口(在单个屏幕上),当您单击其中一个的红色按钮时,另一个窗口自动选择

我已经研究了应用程序main and key windows之间的区别,以及NSWindow如何使用各种方法,如isKeyWindow,canBecomeKey,makeKey(),becomeKey(),isMainWindow,makeMain()等等,似乎无论我如何关闭应用程序,Cocoa应用程序的低级逻辑都会通知应用程序中的其他窗口再次成为主窗口。

我已经尝试了子类化NSWindow并重写了close()方法,如果我使close()完全没有做任何事情,那么正如预期的那样,当我点击红色按钮时,所有窗口都保持不变。

我真的不知道从哪里开始,接下来要看什么。我觉得这不应该难以理解,但我很难过。

0 个答案:

没有答案