我有一个macOS菜单栏应用程序,当用户单击菜单栏中的图标(NSMenu
)时,该应用程序显示NSStatusBarButton
。我想实现一种功能,即使用户单击屏幕上的其他位置,用户也可以启用切换以强制NSMenu
保持打开状态。通常,单击菜单外的某个位置会关闭NSMenu
。如果用户需要引用菜单之外的内容,但仍使用菜单中的信息,则保持菜单打开可能很有用。
我确实意识到NSMenu
对于像我这样的交互式应用程序不是一个很好的选择,但是目前不选择退出NSMenu
。 (请不要建议切换到NSPopover
或定位的窗口)
简而言之,我正在寻找一种骇人听闻的方法来强制NSMenu
保持打开状态,直到我手动允许它关闭为止。如果那是唯一的办法,那么我可以接受。并且在NSMenu
打开时,用户应该能够与其他应用程序/窗口进行交互。
答案应该在Swift中,而不是像App Store上的应用那样使用私有API。并且当它被迫保持打开状态时,应该可以与NSMenu
进行交互。
是否可以在这里使用NSMenuDelegate来处理NSMenu的幕后操作?
https://developer.apple.com/documentation/appkit/nsmenudelegate
从上面苹果提供的链接中获取资源,您应该能够设置一个函数来跟踪它是否处于打开状态,而在条件语句中选择了该选项,它将被迫保持打开状态!