UIDocumentInteractionController est un contrôleur iOS permettant de prévisualiser des documents et de partager des fichiers entre applications. Il implémente la fonctionnalité Open In, permettant à l'utilisateur d'ouvrir un fichier dans n'importe quelle application compatible, de l'envoyer par e-mail ou de le sauvegarder dans le cloud. Selon la documentation Apple Developer (2025), le contrôleur prend également en charge l'aperçu intégré pour visualiser les PDF, images et documents bureautiques.
Points clés
UIDocumentInteractionController est une classe UIKit qui fournit une interface système pour travailler avec des documents. Contrairement à UIDocumentPickerViewController qui sélectionne des fichiers, ce contrôleur travaille avec un fichier existant de l'application et propose à l'utilisateur des actions : prévisualisation, ouverture dans une autre application, impression ou envoi.
Le contrôleur n'est pas un ViewController — il n'est pas appelé via present. Au lieu de cela, il affiche un menu d'actions système via la méthode presentOptionsMenu ou presentPreview. Le menu montre toutes les applications enregistrées pour traiter le type de fichier donné.
UIDocumentInteractionController est disponible depuis iOS 2.0 et est l'une des plus anciennes API pour travailler avec des documents. Malgré son âge, il reste pertinent pour implémenter la fonctionnalité Open In et l'aperçu intégré sans bibliothèques tierces.
Preview est un visualiseur de documents intégré fourni par UIDocumentInteractionController. Il prend en charge les PDF, images, fichiers textes et documents bureautiques (y compris .doc, .xls, .ppt). L'aperçu s'affiche avec une animation de transition similaire à Quick Look standard.
Pour lancer l'aperçu, appelez la méthode presentPreview. Le contrôleur nécessite un délégué qui implémente la méthode previewControllerForDocumentInteractionController, qui retourne un UIViewController pour afficher le document. Généralement, self ou un contrôleur de navigation est retourné.
L'aperçu intégré ne nécessite pas de frameworks ou licences supplémentaires. Il fonctionne avec tout fichier dont l'URL est transmise à la propriété url. Les utilisateurs peuvent faire défiler les pages PDF, zoomer sur les images et copier du texte depuis les documents.
Open In est la fonctionnalité clé de UIDocumentInteractionController. Elle affiche une liste d'applications pouvant ouvrir le type de fichier donné. L'utilisateur sélectionne une application cible, et iOS copie le fichier dans son sandbox, lançant l'application pour travailler avec le document.
La liste des applications est générée automatiquement en fonction des entrées Document Type enregistrées dans Info.plist des autres applications. Si une application a enregistré la prise en charge des PDF, elle apparaîtra dans le menu Open In pour les fichiers PDF. Le système affiche également des actions standard : imprimer, envoyer par e-mail, sauvegarder dans Fichiers.
Open In copie le fichier — l'application cible reçoit sa propre copie, donc les modifications ne sont pas sauvegardées dans l'application d'origine. Si vous avez besoin d'une édition avec sauvegarde, utilisez UIDocumentPickerViewController en mode exportation avec une URL à portée de sécurité.
Depuis iOS 6, UIActivityViewController est disponible, qui prend également en charge le partage de fichiers. Contrairement à UIDocumentInteractionController, UIActivityViewController affiche une feuille d'activités système avec prise en charge d'AirDrop, des e-mails, des messages et des UIActivity personnalisés. Pour un partage simple de fichiers, UIActivityViewController est recommandé comme API plus moderne.
L'implémentation d'Open In via UIDocumentInteractionController ne nécessite que quelques lignes de code : créer une instance, définir l'URL et le délégué, appeler presentOptionsMenu. Le contrôleur collecte automatiquement la liste des applications disponibles en fonction du type de fichier.
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
)
}
}
Pour afficher le visualiseur intégré au lieu du menu Open In, utilisez la méthode presentPreview. Le contrôleur affichera le document en plein écran avec possibilité de défilement. Le délégué doit implémenter la méthode previewControllerForDocumentInteractionController, retournant un UIViewController pour l'affichage.
UIDocumentInteractionControllerDelegate gère l'affichage et la fermeture du menu et de l'aperçu. Le délégué implémente des méthodes optionnelles : documentInteractionControllerWillPresentOpenInMenu pour l'animation d'apparition, documentInteractionControllerDidDismissOpenInMenu pour le nettoyage des ressources après la fermeture du menu.
Une méthode importante pour l'aperçu est previewControllerForDocumentInteractionController, qui doit retourner un UIViewController pour afficher le document. Si la méthode n'est pas implémentée ou retourne nil, l'aperçu ne se lancera pas. Généralement, self ou un UINavigationController contenant self est retourné.
Le contrôleur prend également en charge la méthode documentInteractionController:didEndSendingToApplication, qui est appelée après l'envoi réussi du fichier à une autre application. Cela permet de nettoyer les fichiers temporaires ou de mettre à jour l'interface après le retour à l'application.
UIDocumentInteractionController et UIDocumentPickerViewController résolvent des tâches différentes, bien que tous deux travaillent avec des documents. La principale différence : UIDocumentInteractionController transfère un fichier existant vers une autre application, tandis que UIDocumentPickerViewController sélectionne un fichier depuis une source externe pour l'application courante.
| Paramètre | UIDocumentInteractionController | UIDocumentPickerViewController |
|---|---|---|
| Objectif | Envoyer un fichier vers une autre application | Sélectionner un fichier depuis une autre source |
| Source | Fichier propre à l'application | Tout stockage (iCloud, Fichiers, tiers) |
| Mode | Copie du fichier au destinataire | Import ou Export pour l'application courante |
| Interface | Menu système (Action Sheet) | Navigateur de fichiers complet |
| Retour | Ne retourne pas de résultat | URL du fichier sélectionné via le délégué |
UIDocumentInteractionController ne nécessite pas de délégué pour le fonctionnement de base — le menu s'affichera même sans implémenter de méthodes. UIDocumentPickerViewController sans délégué est inutile — le résultat de la sélection ne sera pas traité. Le choix de l'API dépend du scénario : envoyer un fichier → UIDocumentInteractionController, recevoir un fichier → UIDocumentPickerViewController.
Foire aux questions
UIDocumentInteractionController est un contrôleur UIKit pour prévisualiser des documents et transférer des fichiers entre applications via la fonctionnalité Open In et l'aperçu intégré.
Créez une instance, définissez la propriété url sur le fichier cible, spécifiez le délégué et appelez presentOptionsMenu. Le système affichera une liste d'applications prenant en charge le type de fichier donné.
UIDocumentInteractionController Preview est un visualiseur intégré pour un seul document avec des capacités de base. Quick Look (QLPreviewController) est un framework séparé avec prise en charge de l'affichage par lots, des extensions et de formats de fichiers supplémentaires.
Le délégué est optionnel pour le fonctionnement de base — le menu s'affichera sans lui. Le délégué est obligatoire uniquement pour l'aperçu (méthode previewControllerForDocumentInteractionController) et pour suivre la fin de l'envoi du fichier.
UIDocumentInteractionController envoie un fichier existant de l'application vers une autre application. UIDocumentPickerViewController sélectionne un fichier depuis une source externe vers l'application courante. Le premier est pour envoyer, le second pour recevoir.
Résumé
Nous développerons une application mobile clé en main
IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.
Lisez aussi