Предварительный просмотр и вводные файлы

Когда Ваше приложение должно взаимодействовать с файлами, оно не может предварительно просмотреть или открыться самостоятельно, использовать a UIDocumentInteractionController объект управлять теми взаимодействиями. Контроллер взаимодействия документа работает с платформой Беглого взгляда, чтобы определить, может ли файл быть предварительно просмотрен на месте, открыт другим приложением или обоими. Ваше приложение, в свою очередь, работы с контроллером взаимодействия документа для представления доступных параметров пользователю в подходящее время.

Для использования контроллера взаимодействия документа сделайте следующее:

  1. Создайте экземпляр UIDocumentInteractionController класс для каждого файла Вы хотите взаимодействовать с.

  2. Обеспечьте представление файла в пользовательском интерфейсе Вашего приложения. (Как правило, Вы сделали бы это путем отображения имени файла или значка),

  3. Когда пользователь будет взаимодействовать с представлением файла, такой, поскольку путем ответвления его, попросите, чтобы контроллер взаимодействия документа представил один из следующих интерфейсов:

    • Предварительный просмотр файла, выводящий на экран содержание файла.

    • Меню, содержащее опции предварительно просмотреть файл или открыть его с помощью другого приложения. Можно добавить копирование и параметры печати к этому меню путем реализации надлежащих методов в делегате контроллера взаимодействия документа.

    • Меню, предлагающее пользователю только открыть это с помощью другого приложения.

    Контроллер взаимодействия документа обеспечивает встроенные устройства распознавания жеста, который делает реализацию этих действий прямой.

Любое приложение, взаимодействующее с файлами, может использовать контроллер взаимодействия документа. Наиболее вероятные кандидаты для необходимости в этих возможностях являются приложениями, загружающими файлы с сети. Например, почтовое приложение могло бы использовать контроллеры взаимодействия документа, чтобы предварительно просмотреть или открыть файлы, присоединенные к электронной почте.

Контроллеры взаимодействия документа также полезны для некоторых приложений, не загружающих файлы. Если Ваш совместный доступ к файлам поддержек приложений, например (см. Сохранение состояния UI и проект примера кода DocInteraction), можно использовать контроллер взаимодействия документа с файлом, синхронизировавшимся к приложению Documents/Shared каталог.

Создание и конфигурирование контроллера взаимодействия документа

Для создания нового контроллера взаимодействия документа инициализируйте a UIDocumentInteractionController экземпляр с файлом Вы хотите, чтобы он управлял, и присвоил объект делегата. Делегат ответственен за обеспечение контроллера с информацией, это должно представить свои представления и, дополнительно, для выполнения дополнительных действий, когда те представления выведены на экран, или пользователь взаимодействует с ними.

Следующий код создает новый контроллер взаимодействия документа и устанавливает делегата в текущем объекте. Обратите внимание на то, что вызывающая сторона этого метода должна сохранить возвращенный объект.

- (UIDocumentInteractionController *) setupControllerWithURL: (NSURL) fileURL
    usingDelegate: (id <UIDocumentInteractionControllerDelegate>) interactionDelegate {
 
    UIDocumentInteractionController *interactionController =
        [UIDocumentInteractionController interactionControllerWithURL: fileURL];
    interactionController.delegate = interactionDelegate;
 
    return interactionController;
}

Как только у Вас есть контроллер взаимодействия документа, можно использовать его свойства, чтобы получить информацию о связанном файле включая его имя, ввести, и URL. Контроллер также имеет icons содержащее свойство UIImage объекты, представляющие значок документа в различных размерах. Вся эта информация может быть полезной при представлении файла в пользовательском интерфейсе.

Если Вы планируете позволить пользователю открыть файл в другом приложении, можно использовать annotation свойство контроллера взаимодействия документа для передачи пользовательской информации вводному приложению. Вам решать для предоставления информации в формате, который распознает другое приложение. Например, это свойство может использоваться приложением в пакете приложений. Когда одно приложение хочет передать дополнительную информацию о файле к другим приложениям в комплекте, это делает так посредством annotation свойство. Вводное приложение рассматривает данные аннотации как значение, связанное с UIApplicationLaunchOptionsAnnotationKey ключ словаря опций, передающегося ему.

Представление контроллера взаимодействия документа

Можно использовать контроллер взаимодействия документа, чтобы вывести на экран предварительный просмотр файла или предложить пользователю выбирать действие для файла.

Каждый из этих методов пытается вывести на экран представление — или предварительный просмотр документа или меню. При вызове любого из этих методов проверьте возвращаемое значение. Возвращаемое значение NO указывает, что требуемое представление не содержало бы содержания, и не выведено на экран - также. Например, presentOpenInMenuFromRect:inView:animated: возвраты метода NO при отсутствии установленных приложений, способных к открытию файла.

При вызове метода для отображения предварительного просмотра файла, объект делегата должен реализовать documentInteractionControllerViewControllerForPreview: метод. Предварительные просмотры выведены на экран модально, таким образом, контроллер представления, который Вы возвращаете из этого метода, становится родителем для предварительного просмотра. Если Ваша реализация возвращается, если Вы не реализуете этот метод nil, или если контроллер представления, который возвращает Ваша реализация, неспособен представить другой модальный контроллер представления, предварительный просмотр документа не выведен на экран.

Контроллер взаимодействия документа автоматически обрабатывает увольнение представления, которое это представляет. Однако можно отклонить представление программно по мере необходимости путем вызова dismissMenuAnimated: или dismissPreviewAnimated: методы.

Для примера кода, демонстрирующего, как представить контроллер взаимодействия документа с помощью устройств распознавания жеста, просмотреть проект примера кода DocInteraction.