Техническое примечание режима киоска
Режим Kiosk является системным программным обеспечением и функцией пользовательского интерфейса, которая идеальна для приложений стиля киоска и компьютерных игр. Полезно, когда Вы хотите, чтобы элементы пользовательского интерфейса системы вели себя пользовательскими способами, когда Ваше приложение активно — т.е. когда Вы хотите различный пользовательский опыт от того, который обычно предлагает интерфейс пользователя системы. Эти настраиваемые функции включают прикрепление, строку меню и переключатель задачи. Кроме того, с режимом киоска Ваше частное применение может наблюдать изменения в поведении UI, внесенные другими активными приложениями
В OS X v10.6 и позже, NSApplication класс поддерживает эту настройку. Это также служит заменой для Углерода SystemUIMode API, доступный в OS X v10.5 и ранее.
Основная цель режима киоска состоит в том, чтобы заблокировать пользователя в определенное приложение, любой, чтобы позволить игре принимать весь экран (в приложениях компьютерной игры) или предотвращать uusers в компьютере из вводных приложений, которые не должны быть доступны для них (в приложении стиля киоска).
Это техническое примечание покрывает несколько полезных методов, которые могут использоваться разработчиками киоска, обрисовывают в общих чертах многочисленные опции для режима киоска и предоставляют консультацию о том, как и когда успешно реализовать ее много опций.
Функции API
Режим Kiosk позволяет Вам управлять пользовательским опытом путем управления многочисленными элементами интерфейса пользователя системы из приложения. Например:
Можно решить, хотите ли Вы пользователей к тому, чтобы видеть Прикрепление и строку меню и активно ли Меню Apple.
Можно отключить действия, вынимающие пользователей из приложения, таких как переключение процесса, окно Force Quit, скрывая приложение и Exposé
Можно препятствовать тому, чтобы пользователи перезапустили или выключили компьютер
Выбор функций
Ряд опций существует для настройки пользовательского опыта через NSApplication класс при помощи новой битовой маски, NSApplicationPresentationOptions (этот набор опций служит заменой для интерфейса Carbon SystemUIMode, который доступен в OS X v10.5 и ранее).
Флаги, включающие опции представления приложения, следующие:
Флаг | Описание |
| Настройки по умолчанию. Никакое специальное поведение. |
| Прикрепление появляется когда moused к. Меню центра внимания отключено. |
| Прикрепление полностью недоступно. Меню центра внимания отключено. |
| Строка меню появляется когда moused к. |
| Строка меню полностью недоступна. |
| Все элементы Меню Apple отключены. |
| Cmd+Tab UI отключен. Вся функциональность Exposé также отключена. |
| Панель Cmd+Opt+Esc отключена. |
| Панель PowerKey и Перезапускает/Закрывает, Вниз/Выходить из системы отключены. |
| Пункт меню «Hide» приложения отключен. |
| Прозрачное появление строки меню отключено. |
Получение и установка функций
Существует несколько основных методов, использующихся для получения или установки опций представления. setPresentationOptions: метод устанавливает опции представления приложения в указанное значение. При использовании этого метода важно отметить что только определенные комбинации NSApplicationPresentationOptions флаги позволяются, как детализировано в следующем разделе, и что, когда дали недопустимая комбинация флагов опции, этот метод повышает исключение.
Например, в файле основного контроллера простого приложения оконного, следующего фрагмента кода в awakeFromNib метод скрывает прикрепление и строку меню на запуск Вашего приложения:
-(void) awakeFromNib { |
@try { |
NSApplicationPresentationOptions options = NSApplicationPresentationHideDock + NSApplicationPresentationHideMenuBar; |
[NSApp setPresentationOptions:options]; |
} |
@catch(NSException * exception) { |
NSLog(@"Error. Make sure you have a valid combination of options."); |
} |
} |
presentationOptions метод возвращает набор опций представления приложения для того текущего приложения. currentSystemPresentationOptions метод возвращает набор опций представления приложения, которые являются в настоящее время в действительности для системы. Это опции представлений, осуществленные в настоящее время активным приложением.
Для большинства приложений, начального значения presentationOptions NSApplicationPresentationDefault. Если приложение Info.plist файл указывает значение для ключа LSUIElement, как описано в Создании Киосков, приложение presentationOptions инициализируется к эквивалентной комбинации NSApplicationPresentationOptions флаги вместо этого.
Допустимые комбинации настроек
Когда Вы комбинируете настройки или флаги опции, для передачи setPresentationOptions: метод, необходимо сделать так в пути, удовлетворяющем следующие требования:
NSApplicationPresentationAutoHideDockиNSApplicationPresentationHideDockявляются взаимоисключающими: можно указать один или другой, но не оба.NSApplicationPresentationAutoHideMenuBarиNSApplicationPresentationHideMenuBarявляются взаимоисключающими: можно указать один или другой, но не оба.Если Вы указываете
NSApplicationPresentationHideMenuBar, это должно сопровождатьсяNSApplicationPresentationHideDock. Если Вы указываетеNSApplicationPresentationAutoHideMenuBar, это должно сопровождаться такжеNSApplicationPresentationHideDockилиNSApplicationPresentationAutoHideDock.Если Вы указываете какой-либо из
NSApplicationPresentationDisableProcessSwitching,NSApplicationPresentationDisableForceQuit,NSApplicationPresentationDisableSessionTermination, илиNSApplicationPresentationDisableMenuBarTransparency, это должно сопровождаться такжеNSApplicationPresentationHideDockилиNSApplicationPresentationAutoHideDock.
Когда setPresentationOptions: метод получает a newOptions параметр, не соответствующий этим требованиям, это повышает исключение (NSInvalidArgumentException).
Соответствие наблюдения значения ключа
Оба presentationOptions и currentSystemPresentationOptions совместимое наблюдение значения ключа (KVO). Наблюдающий клиент currentSystemPresentationOptions если следующие события имеют место, получает уведомления:
Клиент является активным приложением и вносит само изменение с помощью
setPresentationOptions:метод.Другое приложение активно и вносит свои собственные изменения.
Подавание различной заявки активные причины активный набор опций представления измениться.
Для получения дополнительной информации о соответствии KVO, посмотрите, что Значение ключа Наблюдает Руководство по программированию.
Совместимость полноэкранного режима
В OS X v10.6 и позже, можно использовать экземпляр NSView класс в полноэкранном режиме и сохраняет функциональность режима киоска. enterFullScreenMode:withOptions: метод принимает новую опцию, пара ключ/значение которой указывает опции режима киоска использовать, в то время как представление работает в полноэкранном режиме. Новый ключ является строкой NSFullScreenModeApplicationPresentationOptions. Это - значение, должен иметь тип NSApplicationPresentationOptions.
Когда словарь опций Вы передаете enterFullScreenMode:withOptions: не содержит значение для NSFullScreenModeApplicationPresentationOptions, AppKit не изменяет опции представления, ранее в действительности прежде получавшие полноэкранное представление. Если Вы указываете, AppKit также получает или целевой экран, или YES для NSFullScreenModeAllScreens, все присоединенные экраны.
В OS X v10.6 и позже, можно поместить представление без окон в полноэкранный режим. Это означает что enterFullScreenMode:withOptions: метод может быть отправлен в представление для который [view window] == nil.
Когда словарь опций Вы передаете enterFullScreenMode:withOptions: действительно содержит значение для NSFullScreenModeApplicationPresentationOptions, AppKit не получает дисплеев, потому что выполнение так предотвратило бы показ presentationOptions- управляемые элементы UI, такие как строка меню и Прикрепление. AppKit помещает требуемый NSApplicationPresentationOptions значение в эффект при переключении представления в полноэкранный режим и восстановлений ранее активный NSApplication установка presentationOptions, когда представление выходит от полноэкранного режима через exitFullScreenModeWithOptions: метод.