时间:2019-12-28 15:31:13

标签: macos

有没有人想出如何区分在macOS中按下红点关闭按钮和按下选项卡式窗口的X关闭按钮?在Apple的文档中,制表类的每个方法和成员都说“ 无可用概述”。遍历头文件并没有发现任何有用的信息。

将应用配置为在使用applicationShouldTerminateAfterLastWindowClosed关闭最后一个窗口时终止,并且剩下带有多个选项卡的单个窗口,并且用户单击红色的关闭按钮,按红色的按钮似乎没有区别。选项卡式窗口上的点和X。 windowShouldClose消息已发布到委托人,但是似乎没有办法区分是按下红点还是选项卡上的X。按下红点将关闭所有选项卡,但是似乎无法分辨出它是红点,因为操作系统开始关闭选项卡并且选项卡也接收到windowShouldClose。这样一来,尝试保存打开的选项卡的状态就变得不可能了,因为操作系统关闭了所有选项卡-并且在调用applicationShouldTerminateAfterLastWindowClosed时,所有窗口都消失了。

变得奇怪。查看红点按钮窗口(_redCloseButton = [_ourWindow standardWindowButton:(NSWindowCloseButton)])的指针,它会更改以反映前面的任何选项卡,因此钩住按钮是无用的。如果您深入了解选项卡式窗口的工作方式,您会发现这些选项卡没有主框架窗口,在一组选项卡式窗口中,它们似乎是实际的窗口,彼此堆叠,而当前选择的选项卡是前面的那个这是按下X时的样子-“ window:”是NSApp enumerateWindowsWithOptions:

返回的顶级窗口
windowShouldClose: <NSWindow: 0x1007123b0> 
window: <NSWindow: 0x1007123b0> - {{822, 358}, {1024, 856}} - 'OctoShell 2' tabbed window count: 2
  tabbedWindow: <NSWindow: 0x1006160b0> - {{822, 358}, {1024, 856}} - 'OctoShell 1'
  tabbedWindow: <NSWindow: 0x1007123b0> - {{822, 358}, {1024, 856}} - 'OctoShell 2'

这是按下红色的关闭点时的样子:

windowShouldClose: <NSWindow: 0x10060d2d0>  
window: <NSWindow: 0x100718ac0> - {{822, 358}, {1024, 856}} - 'OctoShell 2' tabbed window count: 2
  tabbedWindow: <NSWindow: 0x10060d2d0> - {{822, 358}, {1024, 856}} - 'OctoShell 1'
  tabbedWindow: <NSWindow: 0x100718ac0> - {{822, 358}, {1024, 856}} - 'OctoShell 2'

0 个答案:

没有答案