2014-10-02 3 views
5

Laut Apple's documentation scheint es, dass die einzige nicht veraltete Methode für die Anzeige einer Warnmeldung ist, wobei completionHandler Block ein Argument von NSModalResponse-Typ nimmt. NSModalResponse ist eine Enum mit nur 3 possible values: NSModalResponseStop, NSModalResponseAbort und NSModalResponseContinue. Woher weiß ich also, auf welche Schaltfläche in einer Warnmeldung der Benutzer geklickt hat?Wie kann der Rückkehrcode eines Warnhinweises für OS X 10.9+ korrekt erfasst werden?

+0

Alle 3 NSModalResponse-Werte im Enum sind negativ. Versuchen Sie, den Wert, der an den Beendigungshandler übergeben wird, zu protokollieren, vielleicht wird er stattdessen den angeklickten Schaltflächenindex übergeben, falls zutreffend. – Greg

Antwort

3

Der Ergebniscode ist nicht wirklich eine Aufzählung in dem Sinne, dass er nicht nur auf die Werte des Typs NSModalResponse beschränkt ist. Die Enumeration wird nur verwendet, um einige der möglichen Werte zu definieren.

In die Dokumentation für die -addButtonWithTitle: Methode der NSAlert, beispielsweise, die die Antwortcodes erzeugen aus der addierten Schaltfläche erläutert: NSAlertFirstButtonReturn für die ersten, NSAlertSecondButtonReturn für die zweiten, NSAlertThirdButtonReturn für die dritten und NSAlertThirdButtonReturn + n für nachfolgende Tasten.

Siehe auch die Dokumentation für die -runModal Methode:

Wenn Sie alertWithMessageText:defaultButton:alternateButton:otherButton:informativeTextWithFormat: verwenden, um einen Alarm zu erstellen, werden die folgenden Konstanten verwendet, um die Taste zu identifizieren, verwendet, um den Alarm zu entlassen: NSAlertDefaultReturn, NSAlertAlternateReturn und NSAlertOtherReturn. Ansonsten verwendet die Konstanten sind diejenigen, beschrieben in “Button Return Values.”

, dass die gleiche Regel ist, die mit dem Abschluss Handler, den Sie -beginSheetModalForWindow:completionHandler: liefern übergeben für den Antwortcode gilt.

Verwandte Themen