Hallo zusammen,
Es geht um die Irrwege von fokussierten Fenstern im Zusammenhang mit Spaces und so weiter ... Ich hole etwas aus, weil das was ich beschreibe ziemliche Standardfunktionalität ist und bestimmt mehr Leute nach mir danach suchen. Im Internet gibt es erstaunlich wenig zu finden bisher...
Zum Thema:
Ich habe eine Eieruhr-App programmiert, die einen Alarm nach Ablauf eines Timers aufploppen lässt. Es ist eine reine Menubar-App, also ohne Icon im Dock.
Den Timer lasse ich im AppDelegate runterlaufen und mit Ablauf ploppt mein Alarmfenster auf.
Zum Anzeigen des NSWindow verwende ich folgenden Code:
Das führt dann zu folgendem Problem: Wenn der Nutzer gerade in einer Vollbild-App unterwegs ist, wird er "gewaltsam" auf den ersten Desktop zurückgeholt, wo dann das Alarm-Fenster fokussiert angezeigt wird.
Das ist UX-mäßig natürlich Mist. Abhilfe erhält man, wenn man die folgenden beiden Zeilen hinzufügt:
Dieser Code ist schon ganz gut. Wenn der Nutzer in einer Vollbild-App unterwegs ist, legt sich mein Alarm-Fenster über diese Vollbild-App. An dieser Stelle sei gesagt, dass mein Window keine Border hat. Es ist gut möglich, dass andere Window-Eigenschaften hier ein anderes Verhalten hervorrufen würden. Dieses habe ich aber nicht weiter erforscht.
Ein UX-Problem bleibt bestehen für dass ich auch nach Stunden der Suche keine Lösung finde: Wenn ein Nutzer gerade am Schreiben eines Texts ist, wenn der Alarm aufploppt, dann klaut mein Alarm-Window dem zuletzt aktiven Window den Fokus und der Nutzer kann nicht weiterschreiben bevor er mein Fenster weggeklickt hat. Das bekomme ich einfach nicht gelöst. Das Fenster soll im Vordergrund angezeigt werden aber OHNE den Fokus zu klauen. Es ist dann nur mit der Maus bedienbar, aber das ist in meinem Fall völlig in Ordnung. Es verschwindet nach 2 Sekunden von alleine.
Ich habe dazu bereits mit der Eigenschaft canBecomeKey von NSWindow experimentiert, jedoch ohne positivem Ergebnis. Wenn man canBecomeKey=false setzt, führt das lediglich dazu, dass in meinem Fenster keine Hotkeys angenommen werden. Das zuletzt aktive Fenster verliert aber trotzdem seinen Fokus. Ich vermute es könnte mit "makeKeyAndOrderFront" zusammenhängen? Das brauche ich aber um das Fenster überhaupt in den Vordergrund zu bekommen...
Hat jemand eine Idee?
Bin gespannt, danke.
Es geht um die Irrwege von fokussierten Fenstern im Zusammenhang mit Spaces und so weiter ... Ich hole etwas aus, weil das was ich beschreibe ziemliche Standardfunktionalität ist und bestimmt mehr Leute nach mir danach suchen. Im Internet gibt es erstaunlich wenig zu finden bisher...
Zum Thema:
Ich habe eine Eieruhr-App programmiert, die einen Alarm nach Ablauf eines Timers aufploppen lässt. Es ist eine reine Menubar-App, also ohne Icon im Dock.
Den Timer lasse ich im AppDelegate runterlaufen und mit Ablauf ploppt mein Alarmfenster auf.
Zum Anzeigen des NSWindow verwende ich folgenden Code:
Das führt dann zu folgendem Problem: Wenn der Nutzer gerade in einer Vollbild-App unterwegs ist, wird er "gewaltsam" auf den ersten Desktop zurückgeholt, wo dann das Alarm-Fenster fokussiert angezeigt wird.
Das ist UX-mäßig natürlich Mist. Abhilfe erhält man, wenn man die folgenden beiden Zeilen hinzufügt:
Dieser Code ist schon ganz gut. Wenn der Nutzer in einer Vollbild-App unterwegs ist, legt sich mein Alarm-Fenster über diese Vollbild-App. An dieser Stelle sei gesagt, dass mein Window keine Border hat. Es ist gut möglich, dass andere Window-Eigenschaften hier ein anderes Verhalten hervorrufen würden. Dieses habe ich aber nicht weiter erforscht.
Ein UX-Problem bleibt bestehen für dass ich auch nach Stunden der Suche keine Lösung finde: Wenn ein Nutzer gerade am Schreiben eines Texts ist, wenn der Alarm aufploppt, dann klaut mein Alarm-Window dem zuletzt aktiven Window den Fokus und der Nutzer kann nicht weiterschreiben bevor er mein Fenster weggeklickt hat. Das bekomme ich einfach nicht gelöst. Das Fenster soll im Vordergrund angezeigt werden aber OHNE den Fokus zu klauen. Es ist dann nur mit der Maus bedienbar, aber das ist in meinem Fall völlig in Ordnung. Es verschwindet nach 2 Sekunden von alleine.
Ich habe dazu bereits mit der Eigenschaft canBecomeKey von NSWindow experimentiert, jedoch ohne positivem Ergebnis. Wenn man canBecomeKey=false setzt, führt das lediglich dazu, dass in meinem Fenster keine Hotkeys angenommen werden. Das zuletzt aktive Fenster verliert aber trotzdem seinen Fokus. Ich vermute es könnte mit "makeKeyAndOrderFront" zusammenhängen? Das brauche ich aber um das Fenster überhaupt in den Vordergrund zu bekommen...
Hat jemand eine Idee?
Bin gespannt, danke.
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Stephan87 ()