отображение настроек для приложения без окон (LSUIElement) - PullRequest
0 голосов
/ 20 февраля 2011

Я делаю приложение, находящееся в строке состояния (рядом с часами, индикатором питания и другими значками).Тем не менее, чтобы позволить пользователю изменять настройки, мне нужно открыть полноразмерное окно.

Однако, поскольку приложение имеет значение LSUIElement, оно не отображается на вкладке alt + .Это означает, что когда пользователь нажимает на какое-то другое окно, окно префа перемещается назад, и нет простого способа вернуться к нему.(Вы можете свернуть окна одно за другим или использовать F9 , но все это довольно болезненно.)
Итак, у нас бесполезное свисающее окно на заднем плане и сбитый с толку пользователь («куда делось мое окно?»).

Есть ли более эффективные подходы к решению этой задачи?Многие аналогичные утилиты (например, this и this ) имеют ту же проблему, и их авторы, вероятно, не являются прирожденными разработчиками OSX, как я.

Если кому-то интереснозаявка на stackapps .

Спасибо

Ответы [ 3 ]

3 голосов
/ 21 февраля 2011

Стандартный способ -

(1) написать маленькое вспомогательное приложение Preferences и добавить его словарь настроек в ваше приложение без окон с помощью NSUserDefaults addSuiteNamed: - таким образом ваше основное приложение будет иметь прозрачный доступ к настройкам, установленным впомощник через API NSUserDefaults;

(2) использует распределенные уведомления для уведомления приложения без окон об изменениях предпочтений.

1 голос
/ 24 октября 2013

Поскольку ваш пользователь все равно не будет тратить много времени на эту панель предпочтений, не будет ли хорошей идеей, чтобы панель предпочтений всегда оставалась впереди? Это подход больших приложений, таких как Dropbox.

1 голос
/ 20 февраля 2011

Вы можете превратить его в Newt.PrefPane.Тогда это будет доступно через окно системных настроек.Кроме этого - я думаю, что Newt - это классное приложение, и довольно часто так обрабатывают предпочтения приложений с элементами пользовательского интерфейса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...