Frage

Ich habe einen NSAlert mit einer Zubehöransicht und drei Schaltflächen. Die Schaltflächen sind nicht nach rechts ausgerichtet (für das LTR-System), sondern scheinen sich wie unten gezeigt auf die Breite der Zubehöransicht auszudehnen NSAlert- und Zubehöransicht

Beim Entfernen der Zubehöransicht sind die drei Schaltflächen rechts nicht richtig ausgerichtet.

Wie kann dieses Problem behoben werden?Ich möchte den NSAlert nicht ersetzen, der den Code selbst schreibt. Warum muss ich das Rad neu erfinden?

Der von mir verwendete Code wird von setAccessoryView Dokumentation und unten angegeben

NSTextView *accessory = [[NSTextView alloc] initWithFrame:NSMakeRect(0,0,600,15)];
NSFont *font = [NSFont systemFontOfSize:[NSFont systemFontSize]];
NSDictionary *textAttributes = [NSDictionary dictionaryWithObject:font forKey:NSFontAttributeName];
[accessory insertText:[[NSAttributedString alloc] initWithString:@"Text in accessory view"
                                                      attributes:textAttributes]];
[accessory setEditable:NO];
[accessory setDrawsBackground:NO];

NSAlert *alert = [[NSAlert alloc] init];

[alert setMessageText:@"Message text"];
[alert setInformativeText:@"Informative text"];
[alert setAccessoryView:accessory];

[alert addButtonWithTitle:@"Btn 3"];
[alert addButtonWithTitle:@"Btn 2"];
[alert addButtonWithTitle:@"Btn 1"];

[alert runModal];
[alert release];

War es hilfreich?

Lösung

Dies ist das aktuelle Standardlayout einer Warnung. Eine Warnung mit drei Schaltflächen wird unterschiedlich behandelt, da sie häufig verwendet wird:

  • Die erste Schaltfläche (z. B. OK) steht für eine Bestätigung
  • Die zweite Schaltfläche (z. B. Abbrechen) steht für eine Stornierung
  • Die dritte Schaltfläche (z. B. Töte den Pinguin) stellt eine alternative Aktion dar, möglicherweise eine zerstörerische.

    Die dritte Schaltfläche befindet sich links, um zu verdeutlichen, dass es sich um eine Aktion handelt, die sich von Weitergehen (erste Schaltfläche) und Anhalten (zweite Schaltfläche) unterscheidet.

    Dies ist in einigen Apple-Anwendungen zu sehen. In Seiten:

    Bildbeschreibung hier eingeben

    In TextEdit:

    Bildbeschreibung hier eingeben

    Außerdem In der Dokumentation von NSAlert heißt es:

    Das Standard-Alert-Layout kann sich in zukünftigen Systemsoftwareversionen ändern. Wenn Sie sich auf ein benutzerdefiniertes Warnungslayout verlassen, sollten Sie daher sicherstellen, dass Ihre Layouts in zukünftigen Versionen von Mac OS wie erwartet funktionieren.

    Sie könnten sich daher in Zukunft entscheiden, alle drei Schaltflächen rechts oder nur die erste Schaltfläche rechts und die beiden verbleibenden Schaltflächen links auszurichten. Dies erklärt, warum NSAlert keine öffentliche API zur Angabe der Position oder Ausrichtung seiner Schaltflächen bereitstellt.

    Wenn Sie wirklich ein anderes Layout benötigen, müssen Sie es anscheinend selbst entwerfen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top