Я пишу экранную заставку, используя Cocoa ScreenSaver API. Он скомпилирован для 64-битной архитектуры, и я запускаю его на Lion.
Чтобы включить настройку, я добавил в основной вид следующее:
- (BOOL)hasConfigureSheet
{
return YES;
}
- (NSWindow*)configureSheet
{
if (configureSheet == nil) {
if (![NSBundle loadNibNamed: @"WTConfigureSheet" owner: self]) {
NSLog(@"Failed to load config sheet");
return nil;
}
}
ScreenSaverDefaults *defaults =
[ScreenSaverDefaults defaultsForModuleWithName: WTModuleName];
backgroundColorWell.color = [defaults objectForKey: @"BackgroundColor"];
lightLetterColorWell.color = [defaults objectForKey: @"LightLetterColor"];
darkLetterColorWell.color = [defaults objectForKey: @"DarkLetterColor"];
return configureSheet;
}
После установки свежей заставки нажатие "Параметры" приводит к тому, что лист конфигурации появляется не как лист, а свободно плавает на экране, без рамки. В противном случае он работает правильно и исчезает после закрытия.
Когда я нажимаю «Параметры» во второй раз, лист конфигурации появляется снова, на этот раз правильно, как лист окна настроек. Затем он сразу же зависает, так что я не могу щелкнуть ни один из его элементов управления.
Кто-нибудь знает, что вызывает такое поведение?