创建不是警告消息的工作表

时间:2017-07-05 09:18:56

标签: objective-c macos cocoa

我有an app从智能卡读取数据。由于这样做可能需要一段时间,我正在使用模态表来防止在读取数据时与应用程序进行交互:

[_spinner startAnimation:self];
[NSApp beginSheet:_CardReadSheet modalForWindow:_window modalDelegate:self didEndSelector:@selector(endSheet:returnCode:contextInfo:) contextInfo:nil];

_CardReadSheet显示_spinner的位置以及“阅读数据,请稍候”的本地化文字,_window是我的主窗口,endSheet:returnCode:contextInfo只是告诉要关闭的表单。

问题是使用模态表显然只是作为错误或警告消息,因此以这种方式向用户显示它会导致产生默认警告声。这不是意图。

如何让它不发出声音?如果我使用错误的方式来展示工作表,或者如果使用工作表不是正确的事情,我该怎么做呢?

1 个答案:

答案 0 :(得分:1)

警告声音是因为您要求NSApp提供表单:它是作为警报发出的。我无法找到解释原因的官方消息来源,但这就是正在发生的事情。

要获得类似的工作表但没有任何警报声,请在NSWindow上调用beginSheet而不是NSApp。

Swift中的快速示例:

myExistingWindow.beginSheet(myNewSheet, completionHandler: nil)

关闭它:

myExistingWindow.endSheet(myNewSheet)