Mitglied 7974
Gast
Hallo, zusammen!
Ich bekomm mal wieder was nicht gebacken. Dieses Mal ist mir nicht klar, wie das mit der Fenstermodalität funktionieren soll. Letzten Endes will ich einfach nur erreichen, dass ein bestimmter Dialog applikationsweit modal angezeigt wird, diese Modalität beim Schließen des Fensters (sei es durch den regulären Close-Button links oben in der Titelleiste oder durch Okay- und Abbrechen-Button) aber wieder aufgehoben wird.
Laut Dokumentation geht das ja auch ganz einfach: Es gibt die Methode NSApp#runModalForWindow:, die sich darum kümmert. Was ich also aktuell tue, ist, dass ich die Methode showWindow: meines NSWindowControllers für den Dialog überschreibe.
Das klappt dann auch und der Dialog wird modal angezeigt. Wenn ich ihn nun aber mit dem Close-Button in der Titelleiste schließe, wird die Modalität freilich nicht aufgehoben, weil ich hierfür irgendwo noch NSApp#stopModal aufrufen müsste.
Die Frage ist halt nur: Wo muss ich stopModal aufrufen? Von Java her kommend ging ich jetzt davon aus, dass ich entweder im NSWindowController oder im NSWindow direkt irgendwo ein Close-Event oder dergleichen abfangen könnte und dort dann einfach stopModal aufrufe. Es gibt zwar die Methode close, aber die scheint hier nicht der richtige Ansatzpunkt zu sein.
Daher wäre ich froh, wenn ihr mir das Vorgehen erklären könntet, wie man die Modalität eines NSWindow applikationsweit korrekt aktiviert und wieder deaktiviert.
Vielen Dank!
Ich bekomm mal wieder was nicht gebacken. Dieses Mal ist mir nicht klar, wie das mit der Fenstermodalität funktionieren soll. Letzten Endes will ich einfach nur erreichen, dass ein bestimmter Dialog applikationsweit modal angezeigt wird, diese Modalität beim Schließen des Fensters (sei es durch den regulären Close-Button links oben in der Titelleiste oder durch Okay- und Abbrechen-Button) aber wieder aufgehoben wird.
Laut Dokumentation geht das ja auch ganz einfach: Es gibt die Methode NSApp#runModalForWindow:, die sich darum kümmert. Was ich also aktuell tue, ist, dass ich die Methode showWindow: meines NSWindowControllers für den Dialog überschreibe.
Code:
- (void)showWindow:(id)sender {
[super showWindow:sender];
[NSApp runModalForWindow:[super window]];
}
Die Frage ist halt nur: Wo muss ich stopModal aufrufen? Von Java her kommend ging ich jetzt davon aus, dass ich entweder im NSWindowController oder im NSWindow direkt irgendwo ein Close-Event oder dergleichen abfangen könnte und dort dann einfach stopModal aufrufe. Es gibt zwar die Methode close, aber die scheint hier nicht der richtige Ansatzpunkt zu sein.
Daher wäre ich froh, wenn ihr mir das Vorgehen erklären könntet, wie man die Modalität eines NSWindow applikationsweit korrekt aktiviert und wieder deaktiviert.
Vielen Dank!