gpt4 book ai didi

macos - 开始SheetModalForWindow : completionHandler:

转载 作者:行者123 更新时间:2023-12-03 16:54:04 25 4
gpt4 key购买 nike

我想了解 NSObject 可能属于哪个类(除 NSAlert、NSOpenPanel 和 NSSavePanel 之外),以便响应上述调用(如问题标题中所示)。这是我需要做的场景。菜单选择的操作必须是self.window的模态,需要比“确定/取消”更复杂的对话框形式的额外用户输入(与实际工作-为简单起见,示例中省略了代码):

- (IBAction)myActionDialog:(id)sender
{
NSPanel *panel = self.myActionPanel;
[panel beginSheetModalForWindow:self.window completionHandler:^(NSInteger result) {
;
if (result == 0){
;
}
}];
}

但是,编译器警告:

'NSPanel may not respond to beginSheetModalForWindow:completionHandler'
事实上这被证明是正确的,但我不知道如何解决这个问题并编写所需的行为。我一直在寻找适当的文档,但到目前为止什么也没找到。非常欢迎任何有经验的建议。提前致谢!

更新:

这个问题尊重:

[[NSApplication sharedApplication] beginSheet: modalForWindow: modalDelegate: didEndSelector:
contextInfo: ]

方法,几乎​​适用于 NSPanel 的任何子类,AFAICT。唯一的问题是,Apple 在宣布弃用它的同时,还没有正确记录一种可以普遍取代它的替代方法,据我所知。

最佳答案

Apple 已记录了 -[NSApplication beginSheet:...] 的替换。这是 NSWindow 上的新方法:

-beginSheet:completionHandler:
-beginCriticalSheet:completionHandler:
-endSheet:
-endSheet:returnCode:

就您而言,您会这样做:

[self.window beginSheet:panel completionHandler:^(NSInteger result) {
if (result == 0){
;
}
}];

关于macos - 开始SheetModalForWindow : completionHandler:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28927678/

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