#cocoa #shell
#cocoa #оболочка
Вопрос:
Когда я запускаю приложение cocoa из терминала, окно, созданное приложением cocoa, остается за терминалом. Есть ли способ сохранить окно сверху?
Я попробовал в приложении cocoa :
-(void) awakeFromNib {
[self.window makeKeyAndOrderFront: self];
[self.window setLevel: NSMainMenuWindowLevel];
}
также пробовал с setLevel: NSFloatingWindowLevel. Ни то, ни другое не работает.
или я должен поместить [self.window setLevel: NSFloatingWindowLevel] где-нибудь в другом месте?
Кто-нибудь может дать несколько советов? Спасибо.
LJ
Комментарии:
1. Действительно ли в вашем коде есть awaker FromNib или это ошибка транскрипции?
2. извините, это тип. Я уже исправил это. Спасибо.
Ответ №1:
Вам нужно сделать свое окно ключевым окном, а затем оно появится поверх других окон.
[NSApp activateIgnoringOtherApps:YES];
[self.window makeKeyAndOrderFront:self]
А правильный метод — awakeFromNib
нет awakerFromNib
. Игнорируйте, если вы объявили метод пробуждения.
Комментарии:
1. Спасибо за ваш ответ. Во-первых, awakeFromNib это, это опечатка. Я пробовал также с [windowRef makeKeyAndOrderFront:self], тоже безуспешно. Есть какие-нибудь подсказки? На самом деле, я пробовал makeKeyAndOrderFront и setLevel (с разными настройками здесь), у меня ничего не работает. 🙁
2. @user1558064 вы
windowRef
заменили своим объектом window? скажитеself.window
?3. это nswindowcontroller, поэтому я использую self.window, я прав? извините за наивный вопрос от новичка. Что такое windowRef?
4. @user можете ли вы добавить [NSApp activateIgnoringOtherApps:YES]; а затем проверить?
5. Да, [NSApp activateIgnoringOtherApps: YES] работает для меня. Но кто-нибудь может немного объяснить, почему это работает, а другое нет? Спасибо.