AppKit
AppKit является платформой, содержащей все объекты, необходимо реализовать графический, событийно-управляемый пользовательский интерфейс: окна, панели, кнопки, меню, скроллеры и текстовые поля. AppKit обрабатывает все подробности для Вас, поскольку он эффективно привлекает экран, связывается с устройствами и экранными буферами, очищает области экрана перед получением и отсекает представления. Число классов в AppKit может казаться пугающим сначала. Однако большинство классов AppKit является классами поддержки, которые Вы используете косвенно. У Вас также есть выбор, по которому уровню Вы используете AppKit:
Используйте Интерфейсного Разработчика для создания соединений от объектов пользовательского интерфейса до объектов приложения. В этом случае все, что необходимо сделать, реализовать классы приложений — реализуют те методы действия и методы делегата. Например, реализуйте метод, вызывающийся, когда пользователь выбирает пункт меню.
Управляйте пользовательским интерфейсом программно, требующим большего знакомства с классами AppKit и протоколами. Например, разрешение пользователю перетащить значок от одного окна до другого требует некоторого программирования и знакомства с
NSDragging...
протоколы.Реализуйте свои собственные объекты путем разделения на подклассы NSView или других классов. При разделении на подклассы NSView Вы пишете свои собственные методы рисования с помощью графических функций. Разделение на подклассы требует более глубокого понимания того, как работает AppKit.
Для узнавания больше о AppKit рассмотрите NSApplication
, NSWindow
, и NSView
спецификации класса, обращая пристальное внимание на методы делегата. Для более глубокого понимания того, как AppKit работает, посмотрите спецификации для NSResponder
и NSRunLoop
(NSRunLoop
находится в платформе Основы).
Классы AppKit и протоколы
AppKit является крупным; это включает больше чем 125 классов и протоколы. Классы все убывание от класса платформы Основы NSObject. Следующие разделы кратко описывают некоторые темы, которые AppKit адресует через его классы и протоколы.
Инкапсуляция приложения
Каждое приложение использует единственный экземпляр NSApplication
для управления основным циклом событий отслеживайте окна и меню приложения, распределите события надлежащим объектам (т.е. самим или одно из его окон), установите пулы автовыпуска и получите уведомление о событиях уровня приложения. NSApplication
объект имеет делегата (объект, который Вы присваиваете), который уведомляется, когда приложение запускается или завершается, скрыто или активируется, должен открыть файл, выбранный пользователем, и т.д. Путем установки NSApplication
делегат и реализация объекта методов делегата, Вы настраиваете поведение своего приложения, не имея необходимость разделять на подклассы NSApplication
.
Общая обработка событий и получение
NSResponder
класс определяет цепочку респондента, упорядоченный список объектов, реагирующих на пользовательские события. Когда пользователь щелкает кнопкой мыши или нажимает клавишу, событие сгенерировано и отказалось от цепочки респондента в поисках объекта, который может «ответить» на него. Любой объект, обрабатывающий события, должен наследоваться от NSResponder
класс. Базовые классы AppKit, NSApplication
, NSWindow
, и NSView, наследуйтесь от NSResponder
.
NSApplication
объект ведет список NSWindow
объекты — один для каждого окна, принадлежащего приложению — и каждый NSWindow
объект поддерживает иерархию объектов NSView. Иерархия представления используется для рисования и обработки событий в окне. NSWindow
возразите событиям уровня окна дескрипторов, распределяет другие события его представлениям и обеспечивает область получения для его представлений. NSWindow
объект также имеет делегата, разрешающего Вам настроить его поведение.
NSView является абстрактным классом для всех объектов, выведенных на экран в окне. Все подклассы реализуют метод рисования с помощью графических функций; drawRect:
основной метод, который Вы переопределяете при создании нового NSView
подкласс.
Панели
NSPanel
класс является подклассом NSWindow
то, что Вы используете для отображения переходного процесса, глобальной переменной или нажимающей информации. Например, Вы использовали бы экземпляр NSPanel
, вместо экземпляра NSWindow
, вывести на экран сообщения об ошибках или запросить пользователя для ответа на замечательные или необычные обстоятельства. AppKit реализует некоторые общие панели для Вас, такие как Сохранение, панели Open и Print, используемые, чтобы сохранить, открыть, и распечатать документы. Используя эти панели дает пользователю непротиворечивый «стиль» через приложения для общих операций.
Меню и курсоры
NSMenu
, NSMenuItem
, и NSCursor
классы определяют взгляд и поведение меню и курсоров что Ваши отображения приложения пользователю.
Группировка и прокрутка представлений
NSBox, NSScrollView и классы NSSplitView обеспечивают графические «аксессуары» для других объектов представления или наборов представлений в окнах. С классом NSBox можно сгруппировать элементы в окнах и нарисовать границу вокруг всей группы. Класс NSSplitView позволяет Вам «сложить» представления вертикально или горизонтально, разделяя к каждому представлению некоторую сумму общей территории; скользящая панель управления позволяет пользователю перераспределить территорию среди представлений. Класс NSScrollView и его класс помощника, NSClipView, обеспечивают механизм прокрутки, а также графические объекты, позволяющие пользователю инициировать и управлять прокруткой. Класс NSRulerView позволяет Вам добавлять линейку и маркеры к представлению прокрутки.
Управление приложением
NSControl и классы NSCell и их подклассы, определяют единый набор объектов пользовательского интерфейса, таких как кнопки, ползунки и браузеры, которыми пользователь может управлять графически для управления некоторым аспектом приложения. Что ваше дело определенное управление влияние: Когда управление «затронуто», оно отправляет сообщение действия в целевой объект. Вы обычно используете Интерфейсного Разработчика для поставления этих целей и действий Перетаскиванием управления от объекта управления до приложения или другого объекта. Можно также поставить цели и действия программно.
Объект NSControl связан с одним или более объектами NSCell, реализующими подробные данные рисования и обработки событий. Например, кнопка включает и объект NSButton и объект NSButtonCell. Причина этого разделения функциональности состоит в том, чтобы прежде всего позволить классам NSCell быть снова использованными классами NSControl. Например, NSMatrix и NSTableView могут содержать многократные объекты NSCell различных типов.
Таблицы
Класс NSTableView выводит на экран данные последовательно и форму столбца. NSTableView идеален для, но не ограничиваясь этим, выводя на экран записи базы данных, где строки соответствуют каждой записи, и столбцы содержат рекордные атрибуты. Пользователь может отредактировать отдельные ячейки и перестроить столбцы. Вы управляете поведением и содержанием объекта NSTableView путем установки его делегата и объектов источника данных.
Текст и шрифты
Класс NSTextField реализует простое доступное для редактирования текстовое поле, и класс NSTextView предоставляет более всесторонние особенности редактирования более крупным текстовым организациям.
NSTextView, подкласс абстрактного класса NSText, определяет интерфейс к расширенной текстовой системе Какао. NSTextView поддерживает обогащенный текст, присоединения (графика, файл и другой), входное управление и привязка клавиш и отмеченные текстовые атрибуты. NSTextView работает с панелью шрифта и меню, линейками и стилями абзаца, средство Служб (например, служба проверки правописания), и область монтажа. NSTextView также позволяет настраивать через делегацию и уведомления — редко необходимо разделять NSTextView на подклассы. Вы редко создаете экземпляры NSTextView программно также, начиная с объектов на палитрах Интерфейсного Разработчика, таких как NSTextField, NSForm, и NSScrollView, уже содержите объекты NSTextView.
Также возможно сделать более мощное и более творческое текстовое манипулирование (такое как отображение текста в кругу) использование NSTextStorage, NSLayoutManager, NSTextContainer и связанных классов.
NSFont и классы NSFontManager инкапсулируют и управляют семействами шрифтов, размерами и изменениями. Класс NSFont определяет отдельный объект для каждого отличного шрифта; для эффективности эти объекты, которые могут быть довольно большими, совместно используются всеми объектами в Вашем приложении. Класс NSFontPanel определяет панель спецификации шрифтов, это представлено пользователю.
Графика и цвет
Классы NSImage и NSImageRep инкапсулируют графические данные, позволяя Вам легко и эффективно изображения доступа, сохраненные в файлах на диске и выведенные на экран на экране. NSImageRep разделяет на подклассы, каждый знает, как нарисовать изображение из определенного вида исходных данных. Представление изображения значительно под влиянием аппаратных средств, на которых оно выведено на экран. Например, определенное изображение может выглядеть хорошим на цветном мониторе, но может быть «слишком богатым» для монохрома. Через классы изображения можно сгруппировать представления того же изображения, где каждое представление соответствует определенному типу дисплея — решение которого представление использовать можно оставить самому классу NSImage.
Цвет поддерживается классами NSColor, NSColorPanel, NSColorList, NSColorPicker и NSColorWell. NSColor поддерживает богатый набор цветных форматов и представлений, включая пользовательские. Другие классы являются главным образом интерфейсными классами: Они определяют и представляют панели и представления, позволяющие пользователю выбирать и применять цвета. Например, пользователь может перетащить цвета от цветной панели до любого цвета хорошо. Протокол NSColorPicking позволяет Вам расширить панель стандартного цвета.
Перетаскивание
С очень небольшим программированием с Вашей стороны, пользовательские объекты представления могут быть перетащены где угодно. Объекты становятся частью этого механизма перетаскивания путем приспосабливания NSDragging... протоколам: перемещаемые объекты соответствуют протоколу NSDraggingSource, и целевые объекты (получатели отбрасывания) соответствуют протоколу NSDraggingDestination. AppKit скрывает все подробности отслеживания курсора и отображения перетащенного изображения.
Печать
NSPrinter, NSPrintPanel, NSPageLayout и классы NSPrintInfo сотрудничают для обеспечения средних значений для печати информации что отображения приложения в ее окнах и представлениях. Можно также создать представление EPS NSView.
Доступ к файловой системе
Используйте класс NSFileWrapper для создания объектов, соответствующих файлам или каталогам на диске. NSFileWrapper будет содержать содержание файла в памяти так, чтобы это могло быть выведено на экран, изменено или передано к другому приложению. Это также обеспечивает значок для перетаскивания файла или представления его как присоединение. Или используйте класс NSFileManager в платформе Основы, чтобы получить доступ и перечислить содержание каталога и файл. Классы NSOpenPanel и NSSavePanel также обеспечивают удобный и знакомый интерфейс пользователя для файловой системы.
Совместное использование данных с другими приложениями
Класс NSPasteboard определяет область монтажа, репозиторий для данных, это копируется с Вашего приложения, делая это доступными данными к любому приложению, хотящему использовать его. NSPasteboard реализует знакомую операцию вставки копии сокращения. Протокол NSServicesRequest использует область монтажа для передавания данных, это передается между приложениями зарегистрированной службой.
Проверение орфографию
Класс NSSpellServer позволяет Вам определить службу проверки правописания и предоставить в виде сервиса ее к другим приложениям. Для соединения приложения со службой проверки правописания Вы используете класс NSSpellChecker. Протоколы NSIgnoreMisspelledWords и NSChangeSpelling поддерживают механизм проверки правописания.
Локализация
Если приложение должно использоваться больше чем в одной части мира, его ресурсы, возможно, должны быть настроены или «локализованы», для языка, страны или культурной области. Например, приложение, возможно, должно иметь отдельных японцев, англичан, французов и немецкие версии символьных строк, значков, файлов пера или справки контекста. Файлы ресурсов, определенные для определенного языка, группируются в подкаталоге каталога пакета (каталоги с “.lproj
” расширение). Обычно Вы устанавливаете Разработчика Интерфейса использования файлов ресурсов локализации. Посмотрите спецификации для дополнительной NSBundle AppKit Ссылки и NSBundle
класс для получения дополнительной информации о локализации (NSBundle
находится в платформе Основы).
Классы
|
|
Этот класс обеспечивает основную инфраструктуру, требуемую взаимодействовать с клиентом доступности. |
|
Предупреждение появляется на экране или как модальное приложением диалоговое окно или как лист, присоединенный к окну документа. |
|
Объекты |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Экземпляры |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ограничение определяет отношение между двумя атрибутами объектов пользовательского интерфейса, которые должны быть удовлетворены системой расположения на основе ограничений. |
|
|
|
|
|
|
|
|
|
|
|
Экземпляры |
|
|
|
|
|
|
|
Все вызовы OpenGL представляются в контексте графики OpenGL, в Какао представленном |
|
|
|
Представлять с OpenGL в |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Этот класс обеспечивает пользовательский интерфейс для отображения и выбора элементов из списка данных или из иерархически организованных списков данных, таких как пути к каталогам. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Степпер состоит из двух маленьких стрелок, которые могут постепенно увеличить и постепенно уменьшить значение, появляющееся около него, такие как дата или время. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Представление разделения управляет делителями и ориентацией для контроллера представления разделения (экземпляр |
|
Представление штабеля использует Автоматическое Расположение (функция расположения системы на основе ограничений), чтобы расположить и выровнять массив представлений согласно Вашей спецификации. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Контроллер представления управляет представлением, обычно загруженным из файла пера. |
|
|
|
|
|
Контроллер представления разделения управляет массивом смежных дочерних представлений и имеет объект представления разделения для управления делителями между теми представлениями. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Раскадровка инкапсулирует контроллер представления времени проектирования и график контроллера окна, представленный в Интерфейсном файле ресурсов раскадровки Разработчика. |
|
Переход раскадровки указывает переход или отношение включения между двумя сценами в раскадровке, где сцена является контроллером представления или контроллером окна, и раскадровка является экземпляром |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Экземпляр |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Протоколы
Этот протокол объявляет полный список свойств и методов, реализованных доступными элементами. |
|||
|
|||
Этот основанный на ролях протокол объявляет минимальный интерфейс, требуемый для элемента доступности действовать как кнопка. |
|||
Этот основанный на ролях протокол объявляет минимальный интерфейс, требуемый для элемента доступности контролировать поле. |
|||
Этот протокол должен использоваться в дополнение к другому основанному на ролях протоколу. |
|||
Этот основанный на ролях протокол объявляет минимальный интерфейс, требуемый взаимодействовать с клиентом доступности. |
|||
Этот основанный на ролях протокол объявляет минимальный интерфейс, требуемый действовать как контейнер для других элементов пользовательского интерфейса. |
|||
Этот основанный на ролях протокол объявляет минимальный интерфейс, требуемый для элемента доступности действовать как изображение. |
|||
Этот основанный на ролях протокол объявляет минимальный интерфейс, требуемый для элемента доступности действовать как область расположения. |
|||
Этот основанный на ролях протокол объявляет минимальный интерфейс, требуемый для элемента доступности действовать как элемент расположения. |
|||
Этот основанный на ролях протокол объявляет минимальный интерфейс, требуемый для элемента доступности действовать как представление списка. |
|||
Этот основанный на ролях протокол объявляет минимальный интерфейс, требуемый для элемента доступности действовать как пригодный для навигации статический текст. |
|||
Этот основанный на ролях протокол объявляет минимальный интерфейс, требуемый для элемента доступности действовать как представление схемы. |
|||
Этот основанный на ролях протокол объявляет минимальный интерфейс, требуемый для элемента доступности действовать как индикатор хода выполнения. |
|||
Этот основанный на ролях протокол объявляет минимальный интерфейс, требуемый для элемента доступности действовать как переключатель. |
|||
Этот основанный на ролях протокол объявляет минимальный интерфейс, требуемый для элемента доступности действовать как строка для таблицы, перечислять наше представление схемы. |
|||
Этот основанный на ролях протокол объявляет минимальный интерфейс, требуемый для элемента доступности действовать как ползунок. |
|||
Этот основанный на ролях протокол объявляет минимальный интерфейс, требуемый для элемента доступности действовать как статический текст. |
|||
Этот основанный на ролях протокол объявляет минимальный интерфейс, требуемый для элемента доступности действовать как степпер. |
|||
Этот основанный на ролях протокол объявляет минимальный интерфейс, требуемый для элемента доступности действовать как переключатель. |
|||
Этот основанный на ролях протокол объявляет минимальный интерфейс, требуемый для элемента доступности действовать как табличное представление. |
|||
|
|||
|
|||
|
|||
Используйте |
|||
|
|||
|
|||
Этот протокол реализован объектами в цепочке респондента, которая может исправить слово с ошибками. |
|||
|
|||
Вместе с |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
| |||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
Реализуйте этот протокол для имения кнопки Ignore в функции панели Spelling должным образом. |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
Этот протокол реализован по условию провайдер элемента области монтажа для предоставления данных для определенного типа UTI. |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
Реализуйте методы в протоколе выполнения перехода для посредничества пользовательского перехода. |
|||
Этот неофициальный протокол состоит из двух методов, writeSelectionToPasteboard:types: и readSelectionFromPasteboard:. |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
Сконфигурировать пользовательский класс для ответа на представление, отсоединяющееся от или повторно прикрепляющее к, представление штабеля (экземпляр |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
Протокол аниматора представления контроллера представления позволяет Вам определить анимации для игры при переходе между двумя контроллерами представления. |
|||
|
|||
|
|||
|