Действие
Расширение Действия помогает пользователям просмотреть или преобразовать довольный возникновение в приложение узла. Например, расширение Действия могло бы помочь пользователям отредактировать изображение в документе, который они просматривают в текстовом редакторе. Другой тип расширения Действия мог бы позволить пользователям просмотреть выбранный пункт по-другому, такой как просмотр изображения в другом формате или чтении текста на различном языке.
Система предлагает расширение Действия пользователям только, когда расширение объявляет, что может работать с типом содержания, которое в настоящее время использует пользователь. Например, если расширение Действия объявляет, что работает только с текстом, это не сделано доступным, когда пользователь просматривает изображения.
Чтобы изучить, как объявить типы содержания, с которым может работать расширение Действия, считайте Объявление Поддерживаемых Типов данных для Расширения Доли или Действия).
Поймите расширения действия
Расширения действия ведут себя по-другому в зависимости от платформы. В OS X, расширении Действия:
Может быть редактор, в котором пользователи могут внести изменения в выбранное содержание или средство просмотра, в котором пользователи могут просмотреть выбранное содержание по-новому
Может передать к приложению узла изменения содержания, которые пользователи вносят в расширении приложения
Может появиться в модальном представлении, появляющемся из окна приложения узла или в пользовательском представлении, окружающем выбранные пункты пользователя
Автоматически получает выбранное содержание пользователя как часть дополнительного контекста
В iOS, расширении Действия:
Помогает пользователям просмотреть текущий документ по-другому
Всегда появляется в листе действия или полноэкранном модальном представлении
Получает выбранное содержание только если явно предоставленный приложением узла
На обеих платформах пользователи получают доступ к расширениям Действия в предоставленном системой UI. В iOS расширение Действия перечислено в участке застройки контроллера представления действия, появляющегося, когда пользователи касаются кнопки Share. В OS X существует несколько путей, которыми пользователи могут показать список расширений Действия. Например, пользователи могут:
Переместите указатель через некоторое выбранное содержание и нажмите появляющуюся кнопку
Нажмите кнопку на панели инструментов Share
Нажмите пользовательскую кнопку на панели инструментов расширения Действия
Используйте шаблон расширения действия XCode
Шаблон расширения Действия XCode обеспечивает исходные файлы по умолчанию для основного класса контроллера представления (вызванный ActionViewController
), Info.plist
файл и интерфейсный файл (т.е. раскадровка или xib файл).
По умолчанию шаблон Action предоставляет следующий Info.plist
ключи и значения, показанные здесь для цели OS X:
<key>NSExtension</key>
<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>NSExtensionServiceRoleType</key>
<string>NSExtensionServiceRoleTypeEditor</string>
</dict>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.ui-services</string>
<key>NSExtensionPrincipalClass</key>
<string>ActionViewController</string>
</dict>
Для указания задачи расширение Действия OS X включает, используйте одно из следующих значений для требуемого NSExtensionServiceRoleType
ключ:
NSExtensionServiceRoleTypeEditor
— Расширение позволяет редактировать или другая трансформация содержания и возвращает редактирования пользователя приложению узлаNSExtensionServiceRoleTypeViewer
— Расширение позволяет пользователям просмотреть выбранное содержание по-другому, такой как в другом формате
Расширение Действия использует контроллер представления extensionContext
свойство для получения NSExtensionContext
объект. В OS X дополнительный контекст содержит выбранное содержание пользователя, а также размер и позицию того содержания.
В iOS дополнительный контекст имеет содержание, указанное явно приложением узла; это, на усмотрение узла, может включать пользователя выбранное содержание.
Для узнавания больше о дополнительном контексте посмотрите, Реагируют на Запрос Приложения Узла.
Разработайте UI
iOS. Если Вы хотите представить свой полный экран расширения Действия iOS, добавьте следующую пару ключ/значение к расширению NSExtension
словарь:
<key>NSExtensionActionWantsFullScreenPresentation</key>
<true/>
OS X. Рассмотрите размер и позицию выбранного содержания в приложении узла при указании размера и позиции представления расширения Действия.
Используйте preferredContentSize
свойство NSViewController
класс для указания предпочтительного размера дополнительного представления, на основе размера выбранного содержания. (Можно также указать минимальные и максимальные размеры для представления расширения, чтобы гарантировать, что приложение узла не вносит неблагоразумные корректировки в представление.) Для указания предпочтительной позиции для дополнительного представления установите preferredScreenOrigin
свойство к нижнему левому углу представления расширения.
Возврат отредактированного содержания к узлу
На обеих платформах расширение Действия использует NSExtensionContext
метод для отправки редактирований пользователя в приложение узла. Перечисление 7-1 показывает код, что возвраты отредактировали текст к приложению узла, когда пользователь выбирает кнопку Done.
- (IBAction)done:(id)sender {
NSExtensionItem *outputItem = [[NSExtensionItem alloc] init];
outputItem.attributedContentText = self.myTextView.attributedString;
NSArray *outputItems = @[outputItem];
[self.extensionContext completeRequestReturningItems:outputItems];
}