UIDocumentInteractionController — Open In 및 문서

저자: IT Sectr 게시일: 2026-07-11 읽는 시간: 6 분

UIDocumentInteractionController는 문서 미리보기 및 앱 간 파일 공유를 위한 iOS 컨트롤러입니다. Open In 기능을 구현하여 사용자가 호환되는 모든 앱에서 파일을 열거나, 이메일로 보내거나, 클라우드 저장소에 저장할 수 있습니다. Apple Developer Documentation(2025)에 따르면, 이 컨트롤러는 PDF, 이미지 및 오피스 문서를 보기 위한 내장 Preview도 지원합니다.

핵심 사항

  • 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 메서드를 호출하세요. 컨트롤러에는 문서를 표시할 UIViewController를 반환하는 previewControllerForDocumentInteractionController 메서드를 구현하는 델리게이트가 필요합니다. 일반적으로 self 또는 내비게이션 컨트롤러가 반환됩니다.

내장 Preview는 추가 프레임워크나 라이선스가 필요하지 않습니다. url 속성에 URL이 전달된 모든 파일에서 작동합니다. 사용자는 PDF 페이지를 스크롤하고, 이미지를 확대하고, 문서에서 텍스트를 복사할 수 있습니다.

Open In 모드: 앱 간 파일 전송

Open In은 UIDocumentInteractionController의 핵심 기능입니다. 지정된 파일 유형을 열 수 있는 앱 목록을 표시합니다. 사용자가 대상 앱을 선택하면 iOS가 파일을 해당 앱의 샌드박스에 복사하고 문서 작업을 위해 앱을 실행합니다.

앱 목록은 다른 앱의 Info.plist에 등록된 Document Type 항목을 기반으로 자동 생성됩니다. 앱이 PDF 지원을 등록한 경우 PDF 파일에 대한 Open In 메뉴에 나타납니다. 시스템은 인쇄, 이메일 보내기, 파일에 저장과 같은 표준 작업도 표시합니다.

Open In은 파일을 복사합니다 — 대상 앱은 자체 복사본을 받으므로 변경 사항이 원래 앱에 저장되지 않습니다. 저장과 함께 편집이 필요한 경우 보안 범위 URL과 함께 내보내기 모드에서 UIDocumentPickerViewController를 사용하세요.

대안으로서의 UIActivityViewController

iOS 6부터 UIActivityViewController를 사용할 수 있으며 파일 공유도 지원합니다. UIDocumentInteractionController와 달리 UIActivityViewController는 AirDrop, 이메일, 메시지 및 사용자 정의 UIActivity를 지원하는 시스템 활동 시트를 표시합니다. 간단한 파일 공유에는 더 현대적인 API인 UIActivityViewController가 권장됩니다.

코드 예제: Swift에서 Open In

UIDocumentInteractionController를 통한 Open In 구현은 인스턴스를 만들고 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 또는 self를 포함하는 UINavigationController가 반환됩니다.

컨트롤러는 documentInteractionController:didEndSendingToApplication 메서드도 지원하며, 파일이 다른 앱으로 성공적으로 전송된 후 호출됩니다. 이를 통해 임시 파일을 정리하거나 앱으로 돌아온 후 인터페이스를 업데이트할 수 있습니다.

UIDocumentPickerViewController와의 차이점

UIDocumentInteractionControllerUIDocumentPickerViewController는 둘 다 문서로 작업하지만 서로 다른 작업을 해결합니다. 주요 차이점: UIDocumentInteractionController는 기존 파일을 다른 앱으로 전송하는 반면, UIDocumentPickerViewController는 현재 앱을 위해 외부 소스에서 파일을 선택합니다.

매개변수UIDocumentInteractionControllerUIDocumentPickerViewController
목적다른 앱으로 파일 보내기다른 소스에서 파일 선택
소스앱 자체 파일모든 저장소(iCloud, 파일, 서드파티)
모드수신자에게 파일 복사현재 앱용 가져오기 또는 내보내기
인터페이스시스템 메뉴(Action Sheet)전체 파일 브라우저
반환결과를 반환하지 않음델리게이트를 통해 선택한 파일의 URL

UIDocumentInteractionController는 기본 작동에 델리게이트가 필요하지 않습니다 — 메서드를 구현하지 않아도 메뉴가 표시됩니다. 델리게이트 없는 UIDocumentPickerViewController는 쓸모가 없습니다 — 선택 결과가 처리되지 않습니다. API 선택은 시나리오에 따라 다릅니다: 파일 보내기 → UIDocumentInteractionController, 파일 받기 → UIDocumentPickerViewController.

자주 묻는 질문

iOS에서 UIDocumentInteractionController란?

UIDocumentInteractionController는 Open In 기능과 내장 Preview를 통해 문서 미리보기 및 앱 간 파일 전송을 위한 UIKit 컨트롤러입니다.

UIDocumentInteractionController를 사용하여 다른 앱에서 파일을 어떻게 열나요?

인스턴스를 만들고 대상 파일에 url 속성을 설정하고 델리게이트를 지정한 후 presentOptionsMenu를 호출하세요. 시스템이 지정된 파일 유형을 지원하는 앱 목록을 표시합니다.

Preview와 Quick Look의 차이점은?

UIDocumentInteractionController Preview는 기본 기능을 가진 단일 문서용 내장 뷰어입니다. Quick Look(QLPreviewController)은 일괄 보기, 확장 기능 및 추가 파일 형식을 지원하는 별도 프레임워크입니다.

UIDocumentInteractionController에 델리게이트를 구현해야 하나요?

델리게이트는 기본 작동에 선택 사항입니다 — 메뉴는 델리게이트 없이도 표시됩니다. 델리게이트는 Preview(previewControllerForDocumentInteractionController 메서드) 및 파일 전송 완료 추적에만 필수입니다.

UIDocumentInteractionController와 UIDocumentPickerViewController의 차이점은?

UIDocumentInteractionController는 앱에서 다른 앱으로 기존 파일을 보냅니다. UIDocumentPickerViewController는 외부 소스에서 현재 앱으로 파일을 선택합니다. 전자는 보내기용, 후자는 받기용입니다.

요약

  • UIDocumentInteractionController — iOS 2.0부터 사용 가능한, 앱 간 파일을 보고 보내기 위한 iOS 컨트롤러.
  • Preview는 서드파티 라이브러리 없이 PDF, 이미지 및 오피스 문서용 내장 뷰어를 제공합니다.
  • Open In은 선택한 앱의 샌드박스에 파일을 복사합니다 — 변경 사항이 원래 앱으로 돌아가지 않습니다.
  • UIDocumentInteractionControllerDelegate는 델리게이트 메서드를 통해 애니메이션, 메뉴 위치 및 전송 완료를 관리합니다.
  • presentOptionsMenu는 지정된 파일 유형에 사용 가능한 앱이 포함된 시스템 메뉴를 표시합니다.
  • UIActivityViewController는 iOS 6 이후 파일 공유를 위한 더 현대적인 대안입니다.
  • UIDocumentPickerViewController와의 주요 차이점: 전자는 앱에서 파일을 보내고, 후자는 앱으로 파일을 선택합니다.

턴키 방식의 모바일 애플리케이션을 개발해 드립니다

IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.

프로젝트 논의

더 읽어보기