有没有人想出如何区分在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'