面板如何工作

面板是一种特殊的窗口,通常在App中充当辅助功能。NSWindowNSPanel子类为窗口添加了一些特殊行为,以支持任务面板的作用:

  • 默认情况下,面板在关闭时不会释放,因为它们通常是轻量级的并且经常重复使用。

  • 当App不活动时,屏幕面板Alert话框除外)将从屏幕上移除,并在App再次活动时恢复。这样可以减少屏幕混乱。
    具体来说,NSWindow实例的hidesOnDeactivate方法返回false,但是NSPanel实例的该方法返回true

  • 面板可以成为Key窗口,但不能成为主窗口

  • 如果面板Key窗口并具有关闭按钮,则当用户按下Escape键时,它会自行关闭。

除了这些自动行为外,NSPanel类还允许你配置某些面板共有的某些其他行为:

  • 除非用户单击响应输入的视图,否则可以防止面板成为Key窗口。这样可以防止Key窗口不必要地移到面板上。setBecomesKeyOnlyIfNeeded:方法控制此行为。

  • 可以使调色板和类似面板漂浮在标准窗口和其他面板上方。这样可以防止它们被遮盖,并使用户易于使用。setFloatingPanel:方法控制此行为。

  • 可以使一个面板接收鼠标和键盘事件,即使另一个窗口面板正在模态运行或在模态会话中运行也是如此。这允许面板中的动作影响模态窗口面板setWorksWhenModal:方法控制此行为。有关模态窗口面板的更多信息,请参见模态窗口的工作方式