Hallo allerseits,
nach längerer Zeit Cocoa-Abstinenz habe ich vor ein paar Tagen mit der Implementierung eines Aperture-Export-Plugins begonnen. Langsam nimmt es Formen an, ich stosse aber immer wieder auf Probleme, die mich unnötig Zeit kosten. Das letzte habe ich heute morgen gelöst, ich verstehe jedoch nicht warum - vielleicht kann mich ja jemand erleuchten
Ausgangslage: Beim Start des Plugins wird überprüft, ob bereits die benötigten Einstellungen gespeichert sind, und falls nicht, wird ein Sheet eingeblendet, auf dem der Benutzer die Einstellungen machen kann. Dazu wird mein Controller als Observer von NSWindowDidBecomeKeyNotification registriert, da zum Zeitpunkt von awakeFromNib das Export-Fenster noch nicht Key ist. Bei einer Notification wird dann folgende Methode ausgeführt (ungefähr, ich habe den Code gerade nicht vor mir):
Die Folge ist allerdings, dass nachdem das settingsWindow wieder geschlossen wurde, kein weiteres Sheet mehr eingeblendet werden kann. Stattdessen kommt nur eine "visual bell".
Wenn ich allerdings die Reihenfolge ändere:
...dann funktioniert alles tadellos. Kann mir jemand dafür eine Erklärung geben?
Danke & Gruss
Daniel
nach längerer Zeit Cocoa-Abstinenz habe ich vor ein paar Tagen mit der Implementierung eines Aperture-Export-Plugins begonnen. Langsam nimmt es Formen an, ich stosse aber immer wieder auf Probleme, die mich unnötig Zeit kosten. Das letzte habe ich heute morgen gelöst, ich verstehe jedoch nicht warum - vielleicht kann mich ja jemand erleuchten
Ausgangslage: Beim Start des Plugins wird überprüft, ob bereits die benötigten Einstellungen gespeichert sind, und falls nicht, wird ein Sheet eingeblendet, auf dem der Benutzer die Einstellungen machen kann. Dazu wird mein Controller als Observer von NSWindowDidBecomeKeyNotification registriert, da zum Zeitpunkt von awakeFromNib das Export-Fenster noch nicht Key ist. Bei einer Notification wird dann folgende Methode ausgeführt (ungefähr, ich habe den Code gerade nicht vor mir):
Quellcode
- - (void)checkSettings:(NSNotification *)notification {
- if(preferences == nil) {
- [NSApp beginSheet:settingsWindow modalForWindow:[exportManager window] modalDelegate:nil didEndSelector:nil contextInfo:nil];
- } NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter];
- [defaultCenter removeObserver:self];
- }
Die Folge ist allerdings, dass nachdem das settingsWindow wieder geschlossen wurde, kein weiteres Sheet mehr eingeblendet werden kann. Stattdessen kommt nur eine "visual bell".
Wenn ich allerdings die Reihenfolge ändere:
Quellcode
- - (void)checkSettings:(NSNotification *)notification {
- NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter];
- [defaultCenter removeObserver:self];
- if(preferences == nil) {
- [NSApp beginSheet:settingsWindow modalForWindow:[exportManager window] modalDelegate:nil didEndSelector:nil contextInfo:nil];
- }
- }
...dann funktioniert alles tadellos. Kann mir jemand dafür eine Erklärung geben?
Danke & Gruss
Daniel
There will always be skeptics.
There will always be disbelievers.
And there will always be Apple to prove them wrong.
There will always be disbelievers.
And there will always be Apple to prove them wrong.