UIDocumentInteractionController là bộ điều khiển iOS để xem trước tài liệu và chia sẻ tệp giữa các ứng dụng. Nó triển khai tính năng Open In, cho phép người dùng mở tệp trong bất kỳ ứng dụng tương thích nào, gửi qua email hoặc lưu vào đám mây. Theo Apple Developer Documentation (2025), bộ điều khiển cũng hỗ trợ Xem trước tích hợp để xem PDF, hình ảnh và tài liệu văn phòng.
Những điểm chính
UIDocumentInteractionController là một lớp UIKit cung cấp giao diện hệ thống để làm việc với tài liệu. Không giống như UIDocumentPickerViewController chọn tệp, bộ điều khiển này làm việc với tệp hiện có của ứng dụng và cung cấp cho người dùng các hành động: xem trước, mở trong ứng dụng khác, in hoặc gửi.
Bộ điều khiển không phải là ViewController — nó không được gọi qua present. Thay vào đó, nó hiển thị menu hành động hệ thống thông qua phương thức presentOptionsMenu hoặc presentPreview. Menu hiển thị tất cả các ứng dụng đã đăng ký để xử lý loại tệp đã cho.
UIDocumentInteractionController có sẵn từ iOS 2.0 và là một trong những API lâu đời nhất để làm việc với tài liệu. Mặc dù đã cũ, nó vẫn phù hợp để triển khai tính năng Open In và xem trước tích hợp mà không cần thư viện bên thứ ba.
Preview là trình xem tài liệu tích hợp do UIDocumentInteractionController cung cấp. Nó hỗ trợ PDF, hình ảnh, tệp văn bản và tài liệu văn phòng (bao gồm .doc, .xls, .ppt). Bản xem trước hiển thị với hoạt ảnh chuyển tiếp tương tự như Quick Look tiêu chuẩn.
Để khởi chạy Bản xem trước, hãy gọi phương thức presentPreview. Bộ điều khiển yêu cầu một đại biểu triển khai phương thức previewControllerForDocumentInteractionController, trả về UIViewController để hiển thị tài liệu. Thông thường, self hoặc bộ điều khiển điều hướng được trả về.
Bản xem trước tích hợp không yêu cầu framework hoặc giấy phép bổ sung. Nó hoạt động với bất kỳ tệp nào có URL được truyền vào thuộc tính url. Người dùng có thể cuộn qua các trang PDF, phóng to hình ảnh và sao chép văn bản từ tài liệu.
Open In là tính năng chính của UIDocumentInteractionController. Nó hiển thị danh sách các ứng dụng có thể mở loại tệp đã cho. Người dùng chọn ứng dụng đích, và iOS sao chép tệp vào hộp cát của nó, khởi chạy ứng dụng để làm việc với tài liệu.
Danh sách ứng dụng được tạo tự động dựa trên các mục Document Type đã đăng ký trong Info.plist của các ứng dụng khác. Nếu một ứng dụng đã đăng ký hỗ trợ PDF, nó sẽ xuất hiện trong menu Open In cho các tệp PDF. Hệ thống cũng hiển thị các hành động tiêu chuẩn: in, gửi qua email, lưu vào Tệp.
Open In sao chép tệp — ứng dụng đích nhận bản sao riêng của nó, vì vậy các thay đổi không được lưu trở lại ứng dụng gốc. Nếu bạn cần chỉnh sửa có lưu, hãy sử dụng UIDocumentPickerViewController ở chế độ xuất với URL có phạm vi bảo mật.
Từ iOS 6, UIActivityViewController đã có sẵn, hỗ trợ chia sẻ tệp. Không giống như UIDocumentInteractionController, UIActivityViewController hiển thị trang hoạt động hệ thống với hỗ trợ AirDrop, email, tin nhắn và UIActivity tùy chỉnh. Để chia sẻ tệp đơn giản, UIActivityViewController được khuyến nghị như một API hiện đại hơn.
Triển khai Open In qua UIDocumentInteractionController chỉ cần vài dòng mã: tạo một phiên bản, đặt URL và đại biểu, gọi presentOptionsMenu. Bộ điều khiển tự động thu thập danh sách các ứng dụng có sẵn dựa trên loại tệp.
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
)
}
}
Để hiển thị trình xem tích hợp thay vì menu Open In, hãy sử dụng phương thức presentPreview. Bộ điều khiển sẽ hiển thị tài liệu toàn màn hình với khả năng cuộn. Đại biểu phải triển khai phương thức previewControllerForDocumentInteractionController, trả về UIViewController để hiển thị.
UIDocumentInteractionControllerDelegate quản lý việc hiển thị và đóng menu và Bản xem trước. Đại biểu triển khai các phương thức tùy chọn: documentInteractionControllerWillPresentOpenInMenu cho hoạt ảnh xuất hiện, documentInteractionControllerDidDismissOpenInMenu để dọn dẹp tài nguyên sau khi đóng menu.
Một phương thức quan trọng cho Bản xem trước là previewControllerForDocumentInteractionController, phải trả về UIViewController để hiển thị tài liệu. Nếu phương thức không được triển khai hoặc trả về nil, Bản xem trước sẽ không khởi chạy. Thông thường, self hoặc UINavigationController chứa self được trả về.
Bộ điều khiển cũng hỗ trợ phương thức documentInteractionController:didEndSendingToApplication, được gọi sau khi gửi tệp thành công đến ứng dụng khác. Điều này cho phép dọn dẹp tệp tạm thời hoặc cập nhật giao diện sau khi quay lại ứng dụng.
UIDocumentInteractionController và UIDocumentPickerViewController giải quyết các nhiệm vụ khác nhau, mặc dù cả hai đều làm việc với tài liệu. Sự khác biệt chính: UIDocumentInteractionController truyền tệp hiện có sang ứng dụng khác, trong khi UIDocumentPickerViewController chọn tệp từ nguồn bên ngoài cho ứng dụng hiện tại.
| Tham số | UIDocumentInteractionController | UIDocumentPickerViewController |
|---|---|---|
| Mục đích | Gửi tệp sang ứng dụng khác | Chọn tệp từ nguồn khác |
| Nguồn | Tệp riêng của ứng dụng | Bất kỳ bộ nhớ nào (iCloud, Tệp, bên thứ ba) |
| Chế độ | Sao chép tệp cho người nhận | Nhập hoặc Xuất cho ứng dụng hiện tại |
| Giao diện | Menu hệ thống (Action Sheet) | Trình duyệt tệp đầy đủ |
| Trả về | Không trả về kết quả | URL của tệp đã chọn qua đại biểu |
UIDocumentInteractionController không yêu cầu đại biểu cho hoạt động cơ bản — menu sẽ hiển thị ngay cả khi không triển khai phương thức. UIDocumentPickerViewController không có đại biểu là vô ích — kết quả chọn sẽ không được xử lý. Việc chọn API phụ thuộc vào kịch bản: gửi tệp → UIDocumentInteractionController, nhận tệp → UIDocumentPickerViewController.
Các câu hỏi thường gặp
UIDocumentInteractionController là bộ điều khiển UIKit để xem trước tài liệu và truyền tệp giữa các ứng dụng thông qua tính năng Open In và Bản xem trước tích hợp.
Tạo một phiên bản, đặt thuộc tính url vào tệp đích, chỉ định đại biểu và gọi presentOptionsMenu. Hệ thống sẽ hiển thị danh sách các ứng dụng hỗ trợ loại tệp đã cho.
UIDocumentInteractionController Preview là trình xem tích hợp cho một tài liệu duy nhất với các khả năng cơ bản. Quick Look (QLPreviewController) là một framework riêng biệt hỗ trợ xem theo lô, tiện ích mở rộng và các định dạng tệp bổ sung.
Đại biểu là tùy chọn cho hoạt động cơ bản — menu sẽ hiển thị mà không cần nó. Đại biểu chỉ bắt buộc cho Bản xem trước (phương thức previewControllerForDocumentInteractionController) và để theo dõi việc hoàn thành gửi tệp.
UIDocumentInteractionController gửi tệp hiện có từ ứng dụng sang ứng dụng khác. UIDocumentPickerViewController chọn tệp từ nguồn bên ngoài vào ứng dụng hiện tại. Cái trước dùng để gửi, cái sau dùng để nhận.
Tóm tắt
Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay
IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.
Đọc thêm