UIDocumentInteractionController — τι είναι, Open In και έγγραφα

Συγγραφέας: IT Sectr Δημοσιεύτηκε: 2026-07-11 Χρόνος ανάγνωσης: 6 λεπ

UIDocumentInteractionController — είναι ένας ελεγκτής iOS για προεπισκόπηση εγγράφων και κοινή χρήση αρχείων μεταξύ εφαρμογών. Υλοποιεί τη λειτουργία Open In, επιτρέποντας στον χρήστη να ανοίξει ένα αρχείο σε οποιαδήποτε συμβατή εφαρμογή, να το στείλει μέσω email ή να το αποθηκεύσει στο cloud. Σύμφωνα με το Apple Developer Documentation (2025), ο ελεγκτής υποστηρίζει επίσης ενσωματωμένο Preview για προβολή PDF, εικόνων και εγγράφων γραφείου.

Κύρια σημεία

  • UIDocumentInteractionController — ελεγκτής iOS για προβολή και αποστολή εγγράφων σε άλλες εφαρμογές.
  • Preview — ενσωματωμένη προβολή PDF, εικόνων και εγγράφων γραφείου χωρίς εναλλαγή εφαρμογής.
  • Open In — λειτουργία μεταφοράς αρχείου σε άλλη εφαρμογή για επεξεργασία ή προβολή.
  • UIDocumentInteractionControllerDelegate διαχειρίζεται κινούμενα σχέδια, θέση μενού και ολοκλήρωση λειτουργιών.
  • Σε αντίθεση με το UIDocumentPickerViewController, αυτό το API δεν επιλέγει αρχεία, αλλά μεταφέρει υπάρχοντα.

Τι είναι το UIDocumentInteractionController;

UIDocumentInteractionController — είναι μια κλάση UIKit που παρέχει διεπαφή συστήματος για εργασία με έγγραφα. Σε αντίθεση με το UIDocumentPickerViewController που επιλέγει αρχεία, αυτός ο ελεγκτής εργάζεται με ένα ήδη υπάρχον αρχείο της εφαρμογής και προσφέρει ενέργειες στον χρήστη: προεπισκόπηση, άνοιγμα σε άλλη εφαρμογή, εκτύπωση ή αποστολή.

Ο ελεγκτής δεν είναι ViewController — δεν καλείται μέσω present. Αντίθετα, εμφανίζει ένα μενού ενεργειών συστήματος μέσω της μεθόδου presentOptionsMenu ή presentPreview. Το μενού δείχνει όλες τις εφαρμογές που είναι εγγεγραμμένες για την επεξεργασία αυτού του τύπου αρχείου.

Το UIDocumentInteractionController είναι διαθέσιμο από iOS 2.0 και είναι ένα από τα παλαιότερα API για εργασία με έγγραφα. Παρά την ηλικία του, παραμένει σχετικό για την υλοποίηση της λειτουργίας Open In και ενσωματωμένης προεπισκόπησης χωρίς χρήση βιβλιοθηκών τρίτων.

Λειτουργία Preview: ενσωματωμένη προβολή εγγράφων

Preview — είναι μια ενσωματωμένη προβολή εγγράφων που παρέχεται από το UIDocumentInteractionController. Υποστηρίζει PDF, εικόνες, αρχεία κειμένου και έγγραφα γραφείου (συμπεριλαμβανομένων .doc, .xls, .ppt). Το Preview εμφανίζεται με κινούμενα σχέδια μετάβασης παρόμοια με το τυπικό Quick Look.

Για να ξεκινήσετε το Preview, καλέστε τη μέθοδο presentPreview. Ο ελεγκτής απαιτεί έναν εκπρόσωπο με υλοποίηση της μεθόδου previewControllerForDocumentInteractionController, η οποία επιστρέφει ένα UIViewController για την εμφάνιση του εγγράφου. Συνήθως επιστρέφεται self ή ένας ελεγκτής πλοήγησης.

Το ενσωματωμένο Preview δεν απαιτεί πρόσθετα πλαίσια ή άδειες. Λειτουργεί με οποιοδήποτε αρχείο του οποίου το URL έχει μεταφερθεί στην ιδιότητα url. Ο χρήστης μπορεί να ξεφυλλίσει σελίδες PDF, να κλιμακώσει εικόνες και να αντιγράψει κείμενο από έγγραφα.

Λειτουργία Open In: μεταφορά αρχείων μεταξύ εφαρμογών

Open In — η βασική λειτουργία του UIDocumentInteractionController. Εμφανίζει μια λίστα εφαρμογών που μπορούν να ανοίξουν αυτόν τον τύπο αρχείου. Ο χρήστης επιλέγει την εφαρμογή προορισμού και το iOS αντιγράφει το αρχείο στο sandbox της, εκκινώντας την εφαρμογή για εργασία με το έγγραφο.

Η λίστα εφαρμογών σχηματίζεται αυτόματα βάσει των εγγεγραμμένων Document Type στο Info.plist άλλων εφαρμογών. Εάν μια εφαρμογή έχει εγγράψει υποστήριξη για PDF, θα εμφανιστεί στο μενού Open In για αρχεία PDF. Το σύστημα εμφανίζει επίσης τυπικές ενέργειες: εκτύπωση, αποστολή μέσω email, αποθήκευση στα Αρχεία.

Το Open In αντιγράφει το αρχείο — η εφαρμογή προορισμού λαμβάνει το δικό της αντίγραφο, επομένως οι αλλαγές δεν αποθηκεύονται πίσω στην αρχική εφαρμογή. Εάν απαιτείται επεξεργασία με αποθήκευση, χρησιμοποιήστε το UIDocumentPickerViewController σε λειτουργία export με security-scoped URL.

Ρύθμιση UIActivityViewController ως εναλλακτική

Από το iOS 6, είναι διαθέσιμο το UIActivityViewController, το οποίο υποστηρίζει επίσης την αποστολή αρχείων. Σε αντίθεση με το UIDocumentInteractionController, το UIActivityViewController εμφανίζει ένα φύλλο ενεργειών συστήματος με υποστήριξη για AirDrop, email, μηνύματα και προσαρμοσμένο UIActivity. Για απλή αποστολή αρχείων, συνιστάται το UIActivityViewController ως πιο σύγχρονο API.

Παράδειγμα κώδικα: Open In σε Swift

Η υλοποίηση του Open In μέσω UIDocumentInteractionController απαιτεί μόνο λίγες γραμμές κώδικα: δημιουργία παρουσίας, ρύθμιση URL και εκπροσώπου, κλήση presentOptionsMenu. Ο ελεγκτής συλλέγει αυτόματα τη λίστα των διαθέσιμων εφαρμογών βάσει του τύπου αρχείου.

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
        )
    }
}

Εκκίνηση Preview αντί για μενού

Για να εμφανίσετε την ενσωματωμένη προβολή αντί για το μενού Open In, χρησιμοποιήστε τη μέθοδο presentPreview. Ο ελεγκτής θα εμφανίσει το έγγραφο σε πλήρη οθόνη με δυνατότητα ξεφυλλίσματος. Ο εκπρόσωπος πρέπει να υλοποιήσει τη μέθοδο previewControllerForDocumentInteractionController που επιστρέφει ένα UIViewController για εμφάνιση.

UIDocumentInteractionControllerDelegate και κύκλος ζωής

UIDocumentInteractionControllerDelegate διαχειρίζεται την εμφάνιση και απόκρυψη του μενού και του Preview. Ο εκπρόσωπος υλοποιεί προαιρετικές μεθόδους: documentInteractionControllerWillPresentOpenInMenu για κινούμενα σχέδια εμφάνισης, documentInteractionControllerDidDismissOpenInMenu για καθαρισμό πόρων μετά το κλείσιμο του μενού.

Σημαντική μέθοδος για το Preview — previewControllerForDocumentInteractionController, η οποία πρέπει να επιστρέψει ένα UIViewController για την εμφάνιση του εγγράφου. Εάν η μέθοδος δεν έχει υλοποιηθεί ή επιστρέφει nil, το Preview δεν θα ξεκινήσει. Συνήθως επιστρέφεται self ή ένα UINavigationController που περιέχει self.

Ο ελεγκτής υποστηρίζει επίσης τη μέθοδο documentInteractionController:didEndSendingToApplication, η οποία καλείται μετά την επιτυχή μεταφορά του αρχείου σε άλλη εφαρμογή. Αυτό επιτρέπει τον καθαρισμό του προσωρινού αρχείου ή την ενημέρωση της διεπαφής μετά την επιστροφή στην εφαρμογή.

Διαφορές από το UIDocumentPickerViewController

UIDocumentInteractionController και UIDocumentPickerViewController επιλύουν διαφορετικές εργασίες, αν και και τα δύο λειτουργούν με έγγραφα. Η κύρια διαφορά: το UIDocumentInteractionController μεταφέρει ένα υπάρχον αρχείο σε άλλη εφαρμογή, ενώ το UIDocumentPickerViewController επιλέγει ένα αρχείο από εξωτερική πηγή για την τρέχουσα εφαρμογή.

ΠαράμετροςUIDocumentInteractionControllerUIDocumentPickerViewController
ΣκοπόςΑποστολή αρχείου σε άλλη εφαρμογήΕπιλογή αρχείου από άλλη πηγή
ΠηγήΔικό σας αρχείο εφαρμογήςΟποιαδήποτε αποθήκευση (iCloud, Αρχεία, τρίτα μέρη)
ΛειτουργίαΑντίγραφο αρχείου στον παραλήπτηImport ή Export για την τρέχουσα εφαρμογή
ΔιεπαφήΜενού συστήματος (Action Sheet)Πλήρης περιηγητής αρχείων
ΕπιστροφήΔεν επιστρέφει αποτέλεσμαURL επιλεγμένου αρχείου μέσω εκπροσώπου

Το UIDocumentInteractionController δεν απαιτεί εκπρόσωπο για βασική λειτουργία — το μενού θα εμφανιστεί ακόμα και χωρίς υλοποίηση μεθόδων. Το UIDocumentPickerViewController χωρίς εκπρόσωπο είναι άχρηστο — το αποτέλεσμα επιλογής δεν θα υποβληθεί σε επεξεργασία. Η επιλογή API εξαρτάται από το σενάριο: αποστολή αρχείου → UIDocumentInteractionController, λήψη αρχείου → UIDocumentPickerViewController.

Συχνές ερωτήσεις

Τι είναι το UIDocumentInteractionController στο iOS;

UIDocumentInteractionController — είναι ένας ελεγκτής UIKit για προεπισκόπηση εγγράφων και μεταφορά αρχείων μεταξύ εφαρμογών μέσω της λειτουργίας Open In και ενσωματωμένου Preview.

Πώς να ανοίξετε ένα αρχείο σε άλλη εφαρμογή μέσω UIDocumentInteractionController;

Δημιουργήστε μια παρουσία, ορίστε την ιδιότητα url στο αρχείο προορισμού, υποδείξτε τον εκπρόσωπο και καλέστε presentOptionsMenu. Το σύστημα θα εμφανίσει τη λίστα εφαρμογών που υποστηρίζουν αυτόν τον τύπο αρχείου.

Σε τι διαφέρει το Preview από το Quick Look;

UIDocumentInteractionController Preview — ενσωματωμένη προβολή για ένα έγγραφο με βασικές δυνατότητες. Quick Look (QLPreviewController) — ξεχωριστό πλαίσιο με υποστήριξη για μαζική προβολή, επεκτάσεις και πρόσθετες μορφές αρχείων.

Χρειάζεται να υλοποιήσω εκπρόσωπο για το UIDocumentInteractionController;

Ο εκπρόσωπος είναι προαιρετικός για βασική λειτουργία — το μενού θα εμφανιστεί χωρίς αυτόν. Ο εκπρόσωπος απαιτείται μόνο για το Preview (μέθοδος previewControllerForDocumentInteractionController) και για την παρακολούθηση της ολοκλήρωσης αποστολής αρχείου.

Σε τι διαφέρει το UIDocumentInteractionController από το UIDocumentPickerViewController;

UIDocumentInteractionController στέλνει ένα υπάρχον αρχείο από την εφαρμογή σε άλλη. UIDocumentPickerViewController επιλέγει ένα αρχείο από εξωτερική πηγή στην τρέχουσα εφαρμογή. Το πρώτο — για αποστολή, το δεύτερο — για λήψη.

Σύνοψη

  • UIDocumentInteractionController — ελεγκτής iOS για προβολή και αποστολή αρχείων μεταξύ εφαρμογών, διαθέσιμος από iOS 2.0.
  • Preview παρέχει ενσωματωμένη προβολή PDF, εικόνων και εγγράφων γραφείου χωρίς βιβλιοθήκες τρίτων.
  • Open In αντιγράφει το αρχείο στο sandbox της επιλεγμένης εφαρμογής — οι αλλαγές δεν επιστρέφουν στην αρχική εφαρμογή.
  • UIDocumentInteractionControllerDelegate διαχειρίζεται κινούμενα σχέδια, θέση μενού και ολοκλήρωση αποστολής μέσω μεθόδων εκπροσώπου.
  • presentOptionsMenu εμφανίζει το μενού συστήματος με διαθέσιμες εφαρμογές για αυτόν τον τύπο αρχείου.
  • UIActivityViewController είναι μια πιο σύγχρονη εναλλακτική για αποστολή αρχείων από iOS 6.
  • Κύρια διαφορά από το UIDocumentPickerViewController: το πρώτο στέλνει αρχείο από την εφαρμογή, το δεύτερο επιλέγει αρχείο στην εφαρμογή.

Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση

Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.

Συζήτηση έργου

Διαβάστε επίσης