Frage

CFUserNotificationDisplayAlert und < a href = "http://developer.apple.com/mac/library/documentation/CoreFoundation/Reference/CFUserNotificationRef/Reference/reference.html" rel = "nofollow noreferrer"> CFUserNotificationDisplayNotice erzeugt ein nicht -modal Fenster und das ist schlecht, weil es Ihre Anwendung UI in einem sehr unerwünschten Zustand bringen können, wenn Sie das ursprüngliche Anwendungsfenster wählen (das Meldungsfeld versteckt, aber die applicaton nicht reagiert).

Der alte SystemAlert war modal aber diese nicht vollständig Unicode-Strings unterstützen.

Wie kann ich zeigen ein Meldungsfeld als ein modales Fenster unter Mac? Ich suche nach some ähnlich wie MessageBox aus dem Windows?

War es hilfreich?

Lösung 2

Es sieht aus, dass CreateStandardAlert ist die richtige Lösung, weil dies ist modal .


DialogRef theItem;
DialogItemIndex itemIndex;
CreateStandardAlert(kAlertNoteAlert, CFSTR("aaa"), CFSTR("bbb"), NULL, &theItem);
RunStandardAlert(theItem, NULL, &itemIndex);

Andere Tipps

Ich habe es mit CFUserNotificationDisplayAlert umgesetzt und es nicht zurück, bis der Benutzer die MessageBox geschlossen wird.

Wenn Sie einen Blick des Codes nehmen will, muss ich es in MessageBox-Funktion in Mac dort finden Sie eine MessageBox-Funktion für Mac implementiert, ist es nur implementiert für MB_OKCANCEL, aber mit wenig mehr Code finden Sie die gesamte Message-Flaggen und Rückgabewerte könnten decken, ist ein guter Ausgangspunkt.

Hier finden Sie aktuelle NSBeginAlertSheet Funktion oder bei NSApp suchen:

- (void)beginSheet:(NSWindow *)sheet modalForWindow:(NSWindow *)docWindow
      modalDelegate:(id)modalDelegate didEndSelector:(SEL)didEndSelector contextInfo:(void *)contextInfo

kann sein, das, was Sie wollen. Hier ist auch ein schöner Artikel über die Arbeit mit Blättern.

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