Сделать NSWindow Front, но не в фокусе

Я ищу, чтобы принести новый NSWindow перед всеми другими окнами, но не нужно фокусироваться.

Я могу заставить его отображаться спереди с фокусом со следующим:

NSApplication *thisApp = [NSApplication sharedApplication];
[thisApp activateIgnoringOtherApps:YES];

[self makeKeyAndOrderFront:self];

Любые подсказки о том, как сделать это, отображаться сверху, но не отвлекать внимание от другого приложения?

Ответы

Ответ 1

Вместо makeKeyAndOrderFront: попробуйте просто orderFront: (docs)

Ответ 2

Попробуйте что-то вроде этого:

[window setLevel:NSScreenSaverWindowLevel + 1];
[window orderFront:nil];

Это отобразит окно над другими окнами приложений, но не сделает его активным. Окно с нормальным уровнем окна в приложении A не может быть показано перед окном приложения B, если приложение B является активным приложением. (Для этого есть веская причина, кстати).

Пожалуйста, используйте этот метод с осторожностью. Во многих случаях это, скорее всего, нарушит руководящие принципы интерфейса пользователя. При неправильном использовании он может иметь тенденцию мочиться от пользователя. (Например, в моем тестировании только сейчас окно появилось прямо над местом, в котором я случайно искал в Safari. Тот факт, что это было на пути того, что я делал, все же имело смелость не стал ключевым, сделал его еще более раздражающим. Если бы он был в стороне от экрана в углу экрана, это может быть другая история).

Ответ 3

Приоритетные методы и уровень перед заставкой +1 не работали для меня. Этот ответ от The-Kenny сделал, хотя:

[yourPanel setLevel:kCGMaximumWindowLevel];