UIDocumentInteractionController — Open In และเอกสาร

ผู้แต่ง: IT Sectr เผยแพร่เมื่อ: 2026-07-11 เวลาอ่าน: 6 นาที

UIDocumentInteractionController คือตัวควบคุม iOS สำหรับการแสดงตัวอย่างเอกสารและแชร์ไฟล์ระหว่างแอปพลิเคชัน มันใช้ฟีเจอร์ Open In ซึ่งอนุญาตให้ผู้ใช้เปิดไฟล์ในแอปที่เข้ากันได้ ส่งทางอีเมล หรือบันทึกไปยังที่เก็บข้อมูลคลาวด์ ตามเอกสารของนักพัฒนา Apple (2025) ตัวควบคุมนี้ยังรองรับการแสดงตัวอย่างในตัวสำหรับการดู 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) การแสดงตัวอย่างจะแสดงพร้อมแอนิเมชันการเปลี่ยนภาพคล้ายกับ Quick Look มาตรฐาน

ในการเริ่มการแสดงตัวอย่าง ให้เรียกเมธอด presentPreview ตัวควบคุมต้องการตัวแทนที่ใช้เมธอด previewControllerForDocumentInteractionController ซึ่งส่งคืน UIViewController สำหรับแสดงเอกสาร โดยปกติจะส่งคืน self หรือตัวควบคุมการนำทาง

การแสดงตัวอย่างในตัว ไม่ต้องการเฟรมเวิร์กหรือใบอนุญาตเพิ่มเติม มันทำงานกับไฟล์ใด ๆ ที่ URL ถูกส่งต่อไปยังคุณสมบัติ url ผู้ใช้สามารถเลื่อนดูหน้า PDF ซูมรูปภาพ และคัดลอกข้อความจากเอกสาร

โหมด Open In: การถ่ายโอนไฟล์ระหว่างแอป

Open In คือฟีเจอร์หลักของ UIDocumentInteractionController มันแสดงรายการแอปที่สามารถเปิดประเภทไฟล์ที่กำหนด ผู้ใช้เลือกแอปเป้าหมาย และ iOS จะคัดลอกไฟล์ไปยังแซนด์บ็อกซ์ของแอปนั้น เปิดใช้แอปเพื่อทำงานกับเอกสาร

รายการแอปถูกสร้างขึ้นโดยอัตโนมัติตามรายการ Document Type ที่ลงทะเบียนใน Info.plist ของแอปอื่น หากแอปลงทะเบียนการรองรับ PDF แอปนั้นจะปรากฏในเมนู Open In สำหรับไฟล์ PDF ระบบยังแสดงการดำเนินการมาตรฐาน: พิมพ์ ส่งทางอีเมล บันทึกไปยังไฟล์

Open In คัดลอกไฟล์ — แอปเป้าหมายได้รับสำเนาของตัวเอง ดังนั้นการเปลี่ยนแปลงจะไม่ถูกบันทึกกลับไปยังแอปต้นทาง หากคุณต้องการแก้ไขพร้อมบันทึก ให้ใช้ UIDocumentPickerViewController ในโหมดส่งออกพร้อม URL ที่มีขอบเขตความปลอดภัย

UIActivityViewController เป็นทางเลือก

ตั้งแต่ iOS 6 มี UIActivityViewController ซึ่งรองรับการแชร์ไฟล์ด้วยเช่นกัน แตกต่างจาก UIDocumentInteractionController UIActivityViewController จะแสดงแผ่นกิจกรรมของระบบพร้อมรองรับ AirDrop อีเมล ข้อความ และ 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 จัดการการแสดงและการปิดเมนูและการแสดงตัวอย่าง ตัวแทนใช้เมธอดที่เป็นทางเลือก: documentInteractionControllerWillPresentOpenInMenu สำหรับแอนิเมชันการปรากฏ documentInteractionControllerDidDismissOpenInMenu สำหรับการทำความสะอาดทรัพยากรหลังจากปิดเมนู

เมธอดที่สำคัญสำหรับการแสดงตัวอย่างคือ previewControllerForDocumentInteractionController ซึ่งต้องส่งคืน UIViewController สำหรับแสดงเอกสาร หากไม่ได้ใช้เมธอดหรือส่งคืน nil การแสดงตัวอย่างจะไม่เริ่มต้น โดยปกติจะส่งคืน self หรือ UINavigationController ที่มี self

ตัวควบคุมยังรองรับเมธอด documentInteractionController:didEndSendingToApplication ซึ่งถูกเรียกหลังจากส่งไฟล์ไปยังแอปอื่นสำเร็จ ซึ่งช่วยให้ทำความสะอาดไฟล์ชั่วคราวหรืออัปเดตอินเทอร์เฟซหลังจากกลับไปยังแอป

ความแตกต่างจาก UIDocumentPickerViewController

UIDocumentInteractionController และ UIDocumentPickerViewController แก้ปัญหางานที่แตกต่างกัน แม้ว่าทั้งคู่จะทำงานกับเอกสาร ความแตกต่างหลัก: UIDocumentInteractionController ถ่ายโอนไฟล์ที่มีอยู่ไปยังแอปอื่น ในขณะที่ UIDocumentPickerViewController เลือกไฟล์จากแหล่งภายนอกสำหรับแอปปัจจุบัน

พารามิเตอร์UIDocumentInteractionControllerUIDocumentPickerViewController
วัตถุประสงค์ส่งไฟล์ไปยังแอปอื่นเลือกไฟล์จากแหล่งอื่น
แหล่งที่มาไฟล์ของแอปเองพื้นที่เก็บข้อมูลใด ๆ (iCloud, ไฟล์, บุคคลที่สาม)
โหมดสำเนาไฟล์ไปยังผู้รับนำเข้าหรือส่งออกสำหรับแอปปัจจุบัน
อินเทอร์เฟซเมนูระบบ (Action Sheet)เบราว์เซอร์ไฟล์แบบเต็ม
การส่งคืนไม่ส่งคืนผลลัพธ์URL ของไฟล์ที่เลือกผ่านตัวแทน

UIDocumentInteractionController ไม่ต้องการ ตัวแทนสำหรับการทำงานพื้นฐาน — เมนูจะแสดงแม้ไม่มีการใช้เมธอด UIDocumentPickerViewController ที่ไม่มีตัวแทนนั้นไร้ประโยชน์ — ผลลัพธ์การเลือกจะไม่ถูกประมวลผล การเลือก API ขึ้นอยู่กับสถานการณ์: การส่งไฟล์ → UIDocumentInteractionController การรับไฟล์ → UIDocumentPickerViewController

คำถามที่พบบ่อย

UIDocumentInteractionController ใน iOS คืออะไร?

UIDocumentInteractionController คือตัวควบคุม UIKit สำหรับการแสดงตัวอย่างเอกสารและถ่ายโอนไฟล์ระหว่างแอปผ่านฟีเจอร์ Open In และการแสดงตัวอย่างในตัว

วิธีเปิดไฟล์ในแอปอื่นโดยใช้ UIDocumentInteractionController?

สร้างอินสแตนซ์ ตั้งค่าคุณสมบัติ url ไปยังไฟล์เป้าหมาย ระบุตัวแทน และเรียก presentOptionsMenu ระบบจะแสดงรายการแอปที่รองรับประเภทไฟล์ที่กำหนด

Preview แตกต่างจาก Quick Look อย่างไร?

UIDocumentInteractionController Preview คือตัวแสดงในตัวสำหรับเอกสารเดี่ยวที่มีความสามารถพื้นฐาน Quick Look (QLPreviewController) เป็นเฟรมเวิร์กแยกต่างหากที่รองรับการดูเป็นชุด ส่วนขยาย และรูปแบบไฟล์เพิ่มเติม

ฉันต้องใช้ตัวแทนสำหรับ UIDocumentInteractionController หรือไม่?

ตัวแทนเป็น ทางเลือก สำหรับการทำงานพื้นฐาน — เมนูจะแสดงโดยไม่มีตัวแทน ตัวแทนจำเป็นเฉพาะสำหรับการแสดงตัวอย่าง (เมธอด previewControllerForDocumentInteractionController) และสำหรับติดตามการเสร็จสิ้นการส่งไฟล์

UIDocumentInteractionController แตกต่างจาก UIDocumentPickerViewController อย่างไร?

UIDocumentInteractionController ส่งไฟล์ที่มีอยู่จากแอปไปยังแอปอื่น UIDocumentPickerViewController เลือกไฟล์จากแหล่งภายนอกเข้าสู่แอปปัจจุบัน อันแรกสำหรับการส่ง อันหลังสำหรับการรับ

สรุป

  • UIDocumentInteractionController — ตัวควบคุม iOS สำหรับดูและส่งไฟล์ระหว่างแอป พร้อมใช้งานตั้งแต่ iOS 2.0
  • Preview ให้ตัวแสดงในตัวสำหรับ PDF รูปภาพ และเอกสารสำนักงานโดยไม่ต้องใช้ไลบรารีของบุคคลที่สาม
  • Open In คัดลอกไฟล์ไปยังแซนด์บ็อกซ์ของแอปที่เลือก — การเปลี่ยนแปลงจะไม่กลับไปยังแอปต้นทาง
  • UIDocumentInteractionControllerDelegate จัดการแอนิเมชัน ตำแหน่งเมนู และการเสร็จสิ้นการส่งผ่านเมธอดตัวแทน
  • presentOptionsMenu แสดงเมนูระบบพร้อมแอปที่มีอยู่สำหรับประเภทไฟล์ที่กำหนด
  • UIActivityViewController เป็นทางเลือกที่ทันสมัยกว่าสำหรับการแชร์ไฟล์ตั้งแต่ iOS 6
  • ความแตกต่างหลักจาก UIDocumentPickerViewController: อันแรกส่งไฟล์จากแอป อันหลังเลือกไฟล์เข้าแอป

เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร

IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ

ปรึกษาโครงการ

อ่านเพิ่มเติม