我有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
只是告诉要关闭的表单。
问题是使用模态表显然只是作为错误或警告消息,因此以这种方式向用户显示它会导致产生默认警告声。这不是意图。
如何让它不发出声音?如果我使用错误的方式来展示工作表,或者如果使用工作表不是正确的事情,我该怎么做呢?
答案 0 :(得分:1)
警告声音是因为您要求NSApp提供表单:它是作为警报发出的。我无法找到解释原因的官方消息来源,但这就是正在发生的事情。
要获得类似的工作表但没有任何警报声,请在NSWindow上调用beginSheet
而不是NSApp。
Swift中的快速示例:
myExistingWindow.beginSheet(myNewSheet, completionHandler: nil)
关闭它:
myExistingWindow.endSheet(myNewSheet)