2017-07-05 5 views
1

Ich habe an app, die Daten von einer Smartcard liest. Da damit eine Weile dauern kann, ich bin mit einem modalen Blatt Interaktion mit der App zu verhindern, während Daten gelesen:Erstellen Sie ein Blatt, das keine Warnmeldung ist

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

Wo _CardReadSheet zeigt _spinner und einen lokalisierten Text in die Wirkung von „Lesen von Daten, Bitte warten ", _window ist mein Hauptfenster, und endSheet:returnCode:contextInfo sagt nur das Blatt zu schließen.

Das Problem ist, dass die Verwendung eines modalen Blattes anscheinend nur als eine Fehler- oder Warnmeldung gemeint ist. Wenn Sie es dem Benutzer auf diese Weise zeigen, wird der Standardwarnsound erzeugt. Dies ist nicht die Absicht.

Wie kann ich keinen Ton erzeugen? Wenn ich den Bogen falsch zeige oder wenn die Verwendung eines Bogens nicht das Richtige ist, was sollte ich stattdessen tun?

+0

Cool! Ich habe eine Antwort gegeben. – Moritz

Antwort

1

Der Warnton ist, weil Sie NSApp bitten, das Blatt zur Verfügung zu stellen: es tut dies als eine Warnung. Ich kann keine offizielle Quelle finden, die erklärt warum, aber das ist was passiert.

Um ein ähnliches Blatt ohne Alarmsignal zu erhalten, rufen Sie beginSheet auf NSWindow anstelle von NSApp auf.

Schnell Beispiel in Swift:

myExistingWindow.beginSheet(myNewSheet, completionHandler: nil) 

Und um es zu schließen:

myExistingWindow.endSheet(myNewSheet) 
Verwandte Themen