Kann NSAlert zum Erstellen eines Floating Window verwendet werden?

8

Ich habe eine Cocoa-Anwendung, die eine anwendungsmodale Warnung mit der Klasse NSAlert anzeigt. Ich möchte, dass das Warnfenster über den Fenstern aller anderen Anwendungen schwebt. Kann dies mit NSAlert geschehen, oder muss ich ein eigenes Fenster implementieren?

Ich weiß nicht, ob irgendetwas davon zählt, aber die Anwendung ist eine Agentenanwendung ( LSUIElement ist wahr), die als NSStatusItem implementiert ist. (Weitere Informationen zur App, einschließlich des Quellcodes, finden Sie & lt; here & gt; .)

Hier ist der Code, der die Warnung anzeigt:

%Vor%

Ich habe versucht, dies vor dem Aufruf runModal :

zu setzen %Vor%

Ich habe es auch versucht:

%Vor%

Aber keiner von denen lässt das Fenster über anderen bleiben, wenn ich auf das Fenster einer anderen Anwendung klicke. Ich vermute, dass runModal nur keine dieser Einstellungen berücksichtigt.

    
Kristopher Johnson 19.04.2009, 13:31
quelle

2 Antworten

5

Ich habe vor einer Weile mein Gehirn über genau dieses Ding ruiniert.

Der einzige Weg, wie ich das schaffen könnte, war, NSApplication abzuleiten und -sendEvent zu überschreiben. In -sendEvent, rufen Sie zuerst die Implementierung von super auf, dann machen Sie etwas wie folgt:

%Vor%

Abgesehen davon, dass auch das nicht ganz makellos funktioniert hat - wenn man Apps wechselt - würde man das sowieso nie machen wollen, weil es ein eklatanter, primitiver Hack ist.

Also, es tut Ihnen leid, Ihre eigene Version von NSAlert zu schreiben. Wenn Ihnen diese Möglichkeit wirklich wichtig ist, würde ich einen Fehler melden. Es ist ziemlich seltsam, dass [[alertLevel] setLevel: someLevel] von NSApplication nicht beachtet wird und es eine Verschwendung ist, NSAlert mit all seinen netten kleinen automatischen Layout-Funktionen neu zu erstellen, nur um dies zu können. p>     

Dirk Stoop 19.04.2009, 23:23
quelle
2

Am Ende habe ich NSAlert aufgegeben und stattdessen eine alarmistische NSWindow von einer NIB geladen.

Hier ist der Code, der das Fenster anzeigt:

%Vor%

Dies soll bewirken, dass es sich wie ein Alarm verhält, außer dass es auch schwebt und es nicht modal ist, also können Menüpunkte ausgewählt werden, während es hoch ist.

Gibt es noch etwas, was ich hätte tun sollen?

    
Kristopher Johnson 21.04.2009 02:03
quelle

Tags und Links