UIDocumentInteractionController — Open In e documentos

Autor: IT Sectr Publicado: 2026-07-11 Tempo de leitura: 6 min

UIDocumentInteractionController é um controlador iOS para pré-visualizar documentos e partilhar ficheiros entre aplicações. Implementa a funcionalidade Open In, permitindo ao utilizador abrir um ficheiro em qualquer aplicação compatível, enviá-lo por email ou guardá-lo na cloud. De acordo com a Apple Developer Documentation (2025), o controlador também suporta a Pré-visualização incorporada para visualizar PDFs, imagens e documentos de escritório.

Pontos Principais

  • UIDocumentInteractionController — um controlador iOS para visualizar e enviar documentos para outras aplicações.
  • Preview — um visualizador incorporado para PDFs, imagens e documentos de escritório sem mudar de aplicação.
  • Open In — uma função de transferência de ficheiros para outra aplicação para edição ou visualização.
  • UIDocumentInteractionControllerDelegate gere animações, posição do menu e conclusão de operações.
  • Ao contrário do UIDocumentPickerViewController, esta API não seleciona ficheiros, mas transfere os existentes.

O que é UIDocumentInteractionController?

UIDocumentInteractionController é uma classe UIKit que fornece uma interface de sistema para trabalhar com documentos. Ao contrário do UIDocumentPickerViewController, que seleciona ficheiros, este controlador trabalha com um ficheiro existente da aplicação e oferece ao utilizador ações: pré-visualizar, abrir noutra aplicação, imprimir ou enviar.

O controlador não é um ViewController — não é chamado através de present. Em vez disso, exibe um menu de ações do sistema através do método presentOptionsMenu ou presentPreview. O menu mostra todas as aplicações registadas para lidar com o tipo de ficheiro fornecido.

O UIDocumentInteractionController está disponível desde o iOS 2.0 e é uma das APIs mais antigas para trabalhar com documentos. Apesar da idade, continua relevante para implementar a funcionalidade Open In e a pré-visualização incorporada sem bibliotecas de terceiros.

Modo Preview: Visualizador de documentos incorporado

Preview é um visualizador de documentos incorporado fornecido pelo UIDocumentInteractionController. Suporta PDFs, imagens, ficheiros de texto e documentos de escritório (incluindo .doc, .xls, .ppt). A pré-visualização é exibida com uma animação de transição semelhante ao Quick Look padrão.

Para iniciar a Pré-visualização, chame o método presentPreview. O controlador requer um delegado que implemente o método previewControllerForDocumentInteractionController, que retorna um UIViewController para exibir o documento. Normalmente, retorna-se self ou um controlador de navegação.

A Pré-visualização incorporada não requer estruturas ou licenças adicionais. Funciona com qualquer ficheiro cujo URL seja passado para a propriedade url. Os utilizadores podem percorrer páginas PDF, ampliar imagens e copiar texto de documentos.

Modo Open In: Transferência de ficheiros entre aplicações

Open In é a funcionalidade principal do UIDocumentInteractionController. Exibe uma lista de aplicações que podem abrir o tipo de ficheiro fornecido. O utilizador seleciona uma aplicação de destino, e o iOS copia o ficheiro para a sua sandbox, iniciando a aplicação para trabalhar com o documento.

A lista de aplicações é gerada automaticamente com base nas entradas Document Type registadas no Info.plist de outras aplicações. Se uma aplicação registou suporte para PDF, aparecerá no menu Open In para ficheiros PDF. O sistema também mostra ações padrão: imprimir, enviar por email, guardar em Ficheiros.

O Open In copia o ficheiro — a aplicação de destino recebe a sua própria cópia, pelo que as alterações não são guardadas na aplicação original. Se precisar de edição com gravação, use o UIDocumentPickerViewController no modo de exportação com um URL de âmbito de segurança.

UIActivityViewController como alternativa

Desde o iOS 6, está disponível o UIActivityViewController, que também suporta a partilha de ficheiros. Ao contrário do UIDocumentInteractionController, o UIActivityViewController mostra uma folha de atividades do sistema com suporte para AirDrop, email, mensagens e UIActivity personalizados. Para partilha simples de ficheiros, recomenda-se o UIActivityViewController como uma API mais moderna.

Exemplo de código: Open In em Swift

A implementação do Open In através do UIDocumentInteractionController requer apenas algumas linhas de código: criar uma instância, definir o URL e o delegado, chamar presentOptionsMenu. O controlador recolhe automaticamente a lista de aplicações disponíveis com base no tipo de ficheiro.

swift
class DocumentViewController: UIViewController {

    lazy var interactionController = UIDocumentInteractionController()

    func shareFile(url: URL) {
        interactionController.url = url
        interactionController.uti = url.utiType()
        interactionController.delegate = self
        interactionController.presentOptionsMenu(
            from: self.view.bounds,
            in: self.view,
            animated: true
        )
    }
}

Iniciar a Pré-visualização em vez do menu

Para exibir o visualizador incorporado em vez do menu Open In, use o método presentPreview. O controlador mostrará o documento em ecrã inteiro com capacidade de deslocamento. O delegado deve implementar o método previewControllerForDocumentInteractionController, retornando um UIViewController para exibição.

UIDocumentInteractionControllerDelegate e ciclo de vida

UIDocumentInteractionControllerDelegate gere a exibição e o fecho do menu e da Pré-visualização. O delegado implementa métodos opcionais: documentInteractionControllerWillPresentOpenInMenu para a animação de aparecimento, documentInteractionControllerDidDismissOpenInMenu para limpeza de recursos após o fecho do menu.

Um método importante para a Pré-visualização é previewControllerForDocumentInteractionController, que deve retornar um UIViewController para exibir o documento. Se o método não for implementado ou retornar nil, a Pré-visualização não será iniciada. Normalmente, retorna-se self ou um UINavigationController contendo self.

O controlador também suporta o método documentInteractionController:didEndSendingToApplication, que é chamado após o envio bem-sucedido do ficheiro para outra aplicação. Isto permite limpar ficheiros temporários ou atualizar a interface após regressar à aplicação.

Diferenças do UIDocumentPickerViewController

UIDocumentInteractionController e UIDocumentPickerViewController resolvem tarefas diferentes, embora ambos trabalhem com documentos. A principal diferença: o UIDocumentInteractionController transfere um ficheiro existente para outra aplicação, enquanto o UIDocumentPickerViewController seleciona um ficheiro de uma fonte externa para a aplicação atual.

ParâmetroUIDocumentInteractionControllerUIDocumentPickerViewController
PropósitoEnviar ficheiro para outra aplicaçãoSelecionar ficheiro de outra fonte
FonteFicheiro próprio da aplicaçãoQualquer armazenamento (iCloud, Ficheiros, terceiros)
ModoCópia do ficheiro para o destinatárioImportar ou Exportar para a aplicação atual
InterfaceMenu do sistema (Action Sheet)Navegador de ficheiros completo
RetornoNão retorna um resultadoURL do ficheiro selecionado através do delegado

O UIDocumentInteractionController não requer um delegado para funcionamento básico — o menu será exibido mesmo sem implementar métodos. O UIDocumentPickerViewController sem delegado é inútil — o resultado da seleção não será processado. A escolha da API depende do cenário: enviar um ficheiro → UIDocumentInteractionController, receber um ficheiro → UIDocumentPickerViewController.

Perguntas Frequentes

O que é UIDocumentInteractionController no iOS?

UIDocumentInteractionController é um controlador UIKit para pré-visualizar documentos e transferir ficheiros entre aplicações através da funcionalidade Open In e da Pré-visualização incorporada.

Como abrir um ficheiro noutra aplicação usando UIDocumentInteractionController?

Crie uma instância, defina a propriedade url para o ficheiro de destino, especifique o delegado e chame presentOptionsMenu. O sistema mostrará uma lista de aplicações que suportam o tipo de ficheiro fornecido.

Qual é a diferença entre Preview e Quick Look?

UIDocumentInteractionController Preview é um visualizador incorporado para um único documento com capacidades básicas. Quick Look (QLPreviewController) é uma estrutura separada com suporte para visualização em lote, extensões e formatos de ficheiro adicionais.

Preciso de implementar um delegado para UIDocumentInteractionController?

O delegado é opcional para funcionamento básico — o menu será exibido sem ele. O delegado é obrigatório apenas para a Pré-visualização (método previewControllerForDocumentInteractionController) e para rastrear a conclusão do envio do ficheiro.

Qual é a diferença entre UIDocumentInteractionController e UIDocumentPickerViewController?

UIDocumentInteractionController envia um ficheiro existente da aplicação para outra aplicação. UIDocumentPickerViewController seleciona um ficheiro de uma fonte externa para a aplicação atual. O primeiro é para enviar, o segundo para receber.

Resumo

  • UIDocumentInteractionController — um controlador iOS para visualizar e enviar ficheiros entre aplicações, disponível desde o iOS 2.0.
  • Preview fornece um visualizador incorporado para PDFs, imagens e documentos de escritório sem bibliotecas de terceiros.
  • Open In copia o ficheiro para a sandbox da aplicação selecionada — as alterações não são devolvidas à aplicação original.
  • UIDocumentInteractionControllerDelegate gere animações, posição do menu e conclusão do envio através de métodos delegados.
  • presentOptionsMenu exibe um menu do sistema com as aplicações disponíveis para o tipo de ficheiro fornecido.
  • UIActivityViewController é uma alternativa mais moderna para partilha de ficheiros desde o iOS 6.
  • Diferença principal do UIDocumentPickerViewController: o primeiro envia um ficheiro da aplicação, o segundo seleciona um ficheiro para a aplicação.

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também