UIDocumentInteractionController — Open In và tài liệu

Tác giả: IT Sectr Đã đăng: 2026-07-11 Thời gian đọc: 6 phút

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 — bộ điều khiển iOS để xem và gửi tài liệu đến các ứng dụng khác.
  • Preview — trình xem tích hợp cho PDF, hình ảnh và tài liệu văn phòng mà không cần chuyển đổi ứng dụng.
  • Open In — chức năng truyền tệp sang ứng dụng khác để chỉnh sửa hoặc xem.
  • UIDocumentInteractionControllerDelegate quản lý hoạt ảnh, vị trí menu và hoàn thành thao tác.
  • Không giống UIDocumentPickerViewController, API này không chọn tệp mà truyền các tệp hiện có.

UIDocumentInteractionController là gì?

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.

Chế độ Preview: Trình xem tài liệu tích hợp

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.

Chế độ Open In: Truyền tệp giữa các ứng dụng

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.

UIActivityViewController như một giải pháp thay thế

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.

Ví dụ mã: Open In trong Swift

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.

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

Khởi chạy Preview thay vì menu

Để 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 và vòng đời

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.

Khác biệt với UIDocumentPickerViewController

UIDocumentInteractionControllerUIDocumentPickerViewController 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ốUIDocumentInteractionControllerUIDocumentPickerViewController
Mục đíchGửi tệp sang ứng dụng khácChọn tệp từ nguồn khác
NguồnTệp riêng của ứng dụngBất kỳ bộ nhớ nào (iCloud, Tệp, bên thứ ba)
Chế độSao chép tệp cho người nhậnNhập hoặc Xuất cho ứng dụng hiện tại
Giao diệnMenu 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 trong iOS là gì?

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.

Làm thế nào để mở tệp trong ứng dụng khác bằng UIDocumentInteractionController?

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.

Preview khác Quick Look như thế nào?

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.

Tôi có cần triển khai đại biểu cho UIDocumentInteractionController không?

Đạ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 khác UIDocumentPickerViewController như thế nào?

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

  • UIDocumentInteractionController — bộ điều khiển iOS để xem và gửi tệp giữa các ứng dụng, có sẵn từ iOS 2.0.
  • Preview cung cấp trình xem tích hợp cho PDF, hình ảnh và tài liệu văn phòng mà không cần thư viện bên thứ ba.
  • Open In sao chép tệp vào hộp cát của ứng dụng đã chọn — các thay đổi không được trả lại ứng dụng gốc.
  • UIDocumentInteractionControllerDelegate quản lý hoạt ảnh, vị trí menu và hoàn thành gửi qua các phương thức đại biểu.
  • presentOptionsMenu hiển thị menu hệ thống với các ứng dụng có sẵn cho loại tệp đã cho.
  • UIActivityViewController là giải pháp thay thế hiện đại hơn để chia sẻ tệp từ iOS 6.
  • Sự khác biệt chính với UIDocumentPickerViewController: cái trước gửi tệp từ ứng dụng, cái sau chọn tệp vào ứng dụng.

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.

Thảo luận dự án

Đọc thêm