UIDocumentInteractionController — είναι ένας ελεγκτής iOS για προεπισκόπηση εγγράφων και κοινή χρήση αρχείων μεταξύ εφαρμογών. Υλοποιεί τη λειτουργία Open In, επιτρέποντας στον χρήστη να ανοίξει ένα αρχείο σε οποιαδήποτε συμβατή εφαρμογή, να το στείλει μέσω email ή να το αποθηκεύσει στο cloud. Σύμφωνα με το Apple Developer Documentation (2025), ο ελεγκτής υποστηρίζει επίσης ενσωματωμένο Preview για προβολή PDF, εικόνων και εγγράφων γραφείου.
Κύρια σημεία
UIDocumentInteractionController — είναι μια κλάση UIKit που παρέχει διεπαφή συστήματος για εργασία με έγγραφα. Σε αντίθεση με το UIDocumentPickerViewController που επιλέγει αρχεία, αυτός ο ελεγκτής εργάζεται με ένα ήδη υπάρχον αρχείο της εφαρμογής και προσφέρει ενέργειες στον χρήστη: προεπισκόπηση, άνοιγμα σε άλλη εφαρμογή, εκτύπωση ή αποστολή.
Ο ελεγκτής δεν είναι ViewController — δεν καλείται μέσω present. Αντίθετα, εμφανίζει ένα μενού ενεργειών συστήματος μέσω της μεθόδου presentOptionsMenu ή presentPreview. Το μενού δείχνει όλες τις εφαρμογές που είναι εγγεγραμμένες για την επεξεργασία αυτού του τύπου αρχείου.
Το UIDocumentInteractionController είναι διαθέσιμο από iOS 2.0 και είναι ένα από τα παλαιότερα API για εργασία με έγγραφα. Παρά την ηλικία του, παραμένει σχετικό για την υλοποίηση της λειτουργίας Open In και ενσωματωμένης προεπισκόπησης χωρίς χρήση βιβλιοθηκών τρίτων.
Preview — είναι μια ενσωματωμένη προβολή εγγράφων που παρέχεται από το UIDocumentInteractionController. Υποστηρίζει PDF, εικόνες, αρχεία κειμένου και έγγραφα γραφείου (συμπεριλαμβανομένων .doc, .xls, .ppt). Το Preview εμφανίζεται με κινούμενα σχέδια μετάβασης παρόμοια με το τυπικό Quick Look.
Για να ξεκινήσετε το Preview, καλέστε τη μέθοδο presentPreview. Ο ελεγκτής απαιτεί έναν εκπρόσωπο με υλοποίηση της μεθόδου previewControllerForDocumentInteractionController, η οποία επιστρέφει ένα UIViewController για την εμφάνιση του εγγράφου. Συνήθως επιστρέφεται self ή ένας ελεγκτής πλοήγησης.
Το ενσωματωμένο Preview δεν απαιτεί πρόσθετα πλαίσια ή άδειες. Λειτουργεί με οποιοδήποτε αρχείο του οποίου το URL έχει μεταφερθεί στην ιδιότητα url. Ο χρήστης μπορεί να ξεφυλλίσει σελίδες PDF, να κλιμακώσει εικόνες και να αντιγράψει κείμενο από έγγραφα.
Open In — η βασική λειτουργία του UIDocumentInteractionController. Εμφανίζει μια λίστα εφαρμογών που μπορούν να ανοίξουν αυτόν τον τύπο αρχείου. Ο χρήστης επιλέγει την εφαρμογή προορισμού και το iOS αντιγράφει το αρχείο στο sandbox της, εκκινώντας την εφαρμογή για εργασία με το έγγραφο.
Η λίστα εφαρμογών σχηματίζεται αυτόματα βάσει των εγγεγραμμένων Document Type στο Info.plist άλλων εφαρμογών. Εάν μια εφαρμογή έχει εγγράψει υποστήριξη για PDF, θα εμφανιστεί στο μενού Open In για αρχεία PDF. Το σύστημα εμφανίζει επίσης τυπικές ενέργειες: εκτύπωση, αποστολή μέσω email, αποθήκευση στα Αρχεία.
Το Open In αντιγράφει το αρχείο — η εφαρμογή προορισμού λαμβάνει το δικό της αντίγραφο, επομένως οι αλλαγές δεν αποθηκεύονται πίσω στην αρχική εφαρμογή. Εάν απαιτείται επεξεργασία με αποθήκευση, χρησιμοποιήστε το UIDocumentPickerViewController σε λειτουργία export με security-scoped URL.
Από το iOS 6, είναι διαθέσιμο το UIActivityViewController, το οποίο υποστηρίζει επίσης την αποστολή αρχείων. Σε αντίθεση με το UIDocumentInteractionController, το UIActivityViewController εμφανίζει ένα φύλλο ενεργειών συστήματος με υποστήριξη για AirDrop, email, μηνύματα και προσαρμοσμένο UIActivity. Για απλή αποστολή αρχείων, συνιστάται το UIActivityViewController ως πιο σύγχρονο API.
Η υλοποίηση του Open In μέσω UIDocumentInteractionController απαιτεί μόνο λίγες γραμμές κώδικα: δημιουργία παρουσίας, ρύθμιση URL και εκπροσώπου, κλήση presentOptionsMenu. Ο ελεγκτής συλλέγει αυτόματα τη λίστα των διαθέσιμων εφαρμογών βάσει του τύπου αρχείου.
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
)
}
}
Για να εμφανίσετε την ενσωματωμένη προβολή αντί για το μενού Open In, χρησιμοποιήστε τη μέθοδο presentPreview. Ο ελεγκτής θα εμφανίσει το έγγραφο σε πλήρη οθόνη με δυνατότητα ξεφυλλίσματος. Ο εκπρόσωπος πρέπει να υλοποιήσει τη μέθοδο previewControllerForDocumentInteractionController που επιστρέφει ένα UIViewController για εμφάνιση.
UIDocumentInteractionControllerDelegate διαχειρίζεται την εμφάνιση και απόκρυψη του μενού και του Preview. Ο εκπρόσωπος υλοποιεί προαιρετικές μεθόδους: documentInteractionControllerWillPresentOpenInMenu για κινούμενα σχέδια εμφάνισης, documentInteractionControllerDidDismissOpenInMenu για καθαρισμό πόρων μετά το κλείσιμο του μενού.
Σημαντική μέθοδος για το Preview — previewControllerForDocumentInteractionController, η οποία πρέπει να επιστρέψει ένα UIViewController για την εμφάνιση του εγγράφου. Εάν η μέθοδος δεν έχει υλοποιηθεί ή επιστρέφει nil, το Preview δεν θα ξεκινήσει. Συνήθως επιστρέφεται self ή ένα UINavigationController που περιέχει self.
Ο ελεγκτής υποστηρίζει επίσης τη μέθοδο documentInteractionController:didEndSendingToApplication, η οποία καλείται μετά την επιτυχή μεταφορά του αρχείου σε άλλη εφαρμογή. Αυτό επιτρέπει τον καθαρισμό του προσωρινού αρχείου ή την ενημέρωση της διεπαφής μετά την επιστροφή στην εφαρμογή.
UIDocumentInteractionController και UIDocumentPickerViewController επιλύουν διαφορετικές εργασίες, αν και και τα δύο λειτουργούν με έγγραφα. Η κύρια διαφορά: το UIDocumentInteractionController μεταφέρει ένα υπάρχον αρχείο σε άλλη εφαρμογή, ενώ το UIDocumentPickerViewController επιλέγει ένα αρχείο από εξωτερική πηγή για την τρέχουσα εφαρμογή.
| Παράμετρος | UIDocumentInteractionController | UIDocumentPickerViewController |
|---|---|---|
| Σκοπός | Αποστολή αρχείου σε άλλη εφαρμογή | Επιλογή αρχείου από άλλη πηγή |
| Πηγή | Δικό σας αρχείο εφαρμογής | Οποιαδήποτε αποθήκευση (iCloud, Αρχεία, τρίτα μέρη) |
| Λειτουργία | Αντίγραφο αρχείου στον παραλήπτη | Import ή Export για την τρέχουσα εφαρμογή |
| Διεπαφή | Μενού συστήματος (Action Sheet) | Πλήρης περιηγητής αρχείων |
| Επιστροφή | Δεν επιστρέφει αποτέλεσμα | URL επιλεγμένου αρχείου μέσω εκπροσώπου |
Το UIDocumentInteractionController δεν απαιτεί εκπρόσωπο για βασική λειτουργία — το μενού θα εμφανιστεί ακόμα και χωρίς υλοποίηση μεθόδων. Το UIDocumentPickerViewController χωρίς εκπρόσωπο είναι άχρηστο — το αποτέλεσμα επιλογής δεν θα υποβληθεί σε επεξεργασία. Η επιλογή API εξαρτάται από το σενάριο: αποστολή αρχείου → UIDocumentInteractionController, λήψη αρχείου → UIDocumentPickerViewController.
Συχνές ερωτήσεις
UIDocumentInteractionController — είναι ένας ελεγκτής UIKit για προεπισκόπηση εγγράφων και μεταφορά αρχείων μεταξύ εφαρμογών μέσω της λειτουργίας Open In και ενσωματωμένου Preview.
Δημιουργήστε μια παρουσία, ορίστε την ιδιότητα url στο αρχείο προορισμού, υποδείξτε τον εκπρόσωπο και καλέστε presentOptionsMenu. Το σύστημα θα εμφανίσει τη λίστα εφαρμογών που υποστηρίζουν αυτόν τον τύπο αρχείου.
UIDocumentInteractionController Preview — ενσωματωμένη προβολή για ένα έγγραφο με βασικές δυνατότητες. Quick Look (QLPreviewController) — ξεχωριστό πλαίσιο με υποστήριξη για μαζική προβολή, επεκτάσεις και πρόσθετες μορφές αρχείων.
Ο εκπρόσωπος είναι προαιρετικός για βασική λειτουργία — το μενού θα εμφανιστεί χωρίς αυτόν. Ο εκπρόσωπος απαιτείται μόνο για το Preview (μέθοδος previewControllerForDocumentInteractionController) και για την παρακολούθηση της ολοκλήρωσης αποστολής αρχείου.
UIDocumentInteractionController στέλνει ένα υπάρχον αρχείο από την εφαρμογή σε άλλη. UIDocumentPickerViewController επιλέγει ένα αρχείο από εξωτερική πηγή στην τρέχουσα εφαρμογή. Το πρώτο — για αποστολή, το δεύτερο — για λήψη.
Σύνοψη
Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης