Как сохранить окно, созданное приложением cocoa, сверху, приложение запускается из терминала

#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] работает для меня. Но кто-нибудь может немного объяснить, почему это работает, а другое нет? Спасибо.