gpt4 book ai didi

cocoa - 将 NSWindow 显示为工作表的正确方法

转载 作者:行者123 更新时间:2023-12-03 16:37:07 24 4
gpt4 key购买 nike

函数 NSBeginAlertSheet(...) 具有我需要的所有事件,尤其是 didDismiss: 回调,但我确实需要能够执行相同的工作表对我想要的任何窗口进行操作,所以我发现了这个通知:

NSWindowDidOrderOffScreenAndFinishAnimatingNotification

每当关闭工作表并完成动画时都会发布该内容现在,我的问题是我可以使用它吗?或者有更好的办法吗?

我使用 ARC,并使用 NSWindowController.xib 加载窗口。

总的来说,我需要的是将窗口显示为工作表并捕获所有事件。

最佳答案

出了什么问题

- (void)beginSheet:(NSWindow *)sheet modalForWindow:(NSWindow *)docWindow modalDelegate:(id)modalDelegate didEndSelector:(SEL)didEndSelector contextInfo:(void *)contextInfo

这会调用可选的didEndSelector,它应该如下所示:

- (void)sheetDidEnd:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo;

这一切都在 NSApplication 中文档。结束工作表有两种方法:

- (void)endSheet:(NSWindow *)sheet returnCode:(NSInteger)returnCode
- (void)endSheet:(NSWindow *)sheet

因此,您可以在调用 endSheet: 之前执行任何您想做的操作,或者在 sheetDidEnd: 方法中执行操作。

编辑:

Here是一个示例项目,显示调用 [window orderOut:self] 后动画完成,您可以执行您想要的操作。

关于cocoa - 将 NSWindow 显示为工作表的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17736872/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com