Ответ 1
Вместо makeKeyAndOrderFront:
попробуйте просто orderFront:
(docs)
Я ищу, чтобы принести новый NSWindow перед всеми другими окнами, но не нужно фокусироваться.
Я могу заставить его отображаться спереди с фокусом со следующим:
NSApplication *thisApp = [NSApplication sharedApplication]; [thisApp activateIgnoringOtherApps:YES]; [self makeKeyAndOrderFront:self];
Любые подсказки о том, как сделать это, отображаться сверху, но не отвлекать внимание от другого приложения?
Вместо makeKeyAndOrderFront:
попробуйте просто orderFront:
(docs)
Попробуйте что-то вроде этого:
[window setLevel:NSScreenSaverWindowLevel + 1];
[window orderFront:nil];
Это отобразит окно над другими окнами приложений, но не сделает его активным. Окно с нормальным уровнем окна в приложении A не может быть показано перед окном приложения B, если приложение B является активным приложением. (Для этого есть веская причина, кстати).
Пожалуйста, используйте этот метод с осторожностью. Во многих случаях это, скорее всего, нарушит руководящие принципы интерфейса пользователя. При неправильном использовании он может иметь тенденцию мочиться от пользователя. (Например, в моем тестировании только сейчас окно появилось прямо над местом, в котором я случайно искал в Safari. Тот факт, что это было на пути того, что я делал, все же имело смелость не стал ключевым, сделал его еще более раздражающим. Если бы он был в стороне от экрана в углу экрана, это может быть другая история).
Приоритетные методы и уровень перед заставкой +1 не работали для меня. Этот ответ от The-Kenny сделал, хотя:
[yourPanel setLevel:kCGMaximumWindowLevel];