UIDocumentInteractionController — Open In y documentos

Autor: IT Sectr Publicado: 2026-07-11 Tiempo de lectura: 6 min

UIDocumentInteractionController es un controlador de iOS para previsualizar documentos y compartir archivos entre aplicaciones. Implementa la función Open In, permitiendo al usuario abrir un archivo en cualquier aplicación compatible, enviarlo por correo o guardarlo en la nube. Según Apple Developer Documentation (2025), el controlador también admite la vista previa incorporada para ver PDF, imágenes y documentos de oficina.

Puntos Clave

  • UIDocumentInteractionController — un controlador de iOS para ver y enviar documentos a otras aplicaciones.
  • Preview — un visor incorporado para PDF, imágenes y documentos de oficina sin cambiar de aplicación.
  • Open In — una función de transferencia de archivos a otra aplicación para editar o visualizar.
  • UIDocumentInteractionControllerDelegate gestiona animaciones, posición del menú y finalización de operaciones.
  • A diferencia de UIDocumentPickerViewController, esta API no selecciona archivos sino que transfiere los existentes.

¿Qué es UIDocumentInteractionController?

UIDocumentInteractionController es una clase de UIKit que proporciona una interfaz de sistema para trabajar con documentos. A diferencia de UIDocumentPickerViewController, que selecciona archivos, este controlador trabaja con un archivo existente de la aplicación y ofrece al usuario acciones: previsualizar, abrir en otra aplicación, imprimir o enviar.

El controlador no es un ViewController — no se invoca mediante present. En su lugar, muestra un menú de acciones del sistema a través del método presentOptionsMenu o presentPreview. El menú muestra todas las aplicaciones registradas para manejar el tipo de archivo dado.

UIDocumentInteractionController está disponible desde iOS 2.0 y es una de las API más antiguas para trabajar con documentos. A pesar de su antigüedad, sigue siendo relevante para implementar la función Open In y la vista previa incorporada sin bibliotecas de terceros.

Modo Preview: Visor de documentos incorporado

Preview es un visor de documentos incorporado proporcionado por UIDocumentInteractionController. Soporta PDF, imágenes, archivos de texto y documentos de oficina (incluyendo .doc, .xls, .ppt). La vista previa se muestra con una animación de transición similar al Quick Look estándar.

Para iniciar la vista previa, llame al método presentPreview. El controlador requiere un delegado que implemente el método previewControllerForDocumentInteractionController, que devuelve un UIViewController para mostrar el documento. Normalmente se devuelve self o un controlador de navegación.

La vista previa incorporada no requiere frameworks o licencias adicionales. Funciona con cualquier archivo cuya URL se pase a la propiedad url. Los usuarios pueden desplazarse por las páginas PDF, hacer zoom en las imágenes y copiar texto de los documentos.

Modo Open In: Transferencia de archivos entre aplicaciones

Open In es la función clave de UIDocumentInteractionController. Muestra una lista de aplicaciones que pueden abrir el tipo de archivo dado. El usuario selecciona una aplicación de destino, e iOS copia el archivo en su sandbox, iniciando la aplicación para trabajar con el documento.

La lista de aplicaciones se genera automáticamente basándose en las entradas de Document Type registradas en Info.plist de otras aplicaciones. Si una aplicación registró soporte para PDF, aparecerá en el menú Open In para archivos PDF. El sistema también muestra acciones estándar: imprimir, enviar por correo, guardar en Archivos.

Open In copia el archivo — la aplicación de destino recibe su propia copia, por lo que los cambios no se guardan en la aplicación original. Si necesita edición con guardado, use UIDocumentPickerViewController en modo exportación con una URL de ámbito de seguridad.

UIActivityViewController como alternativa

Desde iOS 6, está disponible UIActivityViewController, que también admite el intercambio de archivos. A diferencia de UIDocumentInteractionController, UIActivityViewController muestra una hoja de actividades del sistema con soporte para AirDrop, correo, mensajes y UIActivity personalizados. Para el intercambio simple de archivos, se recomienda UIActivityViewController como una API más moderna.

Ejemplo de código: Open In en Swift

Implementación de Open In mediante UIDocumentInteractionController requiere solo unas pocas líneas de código: crear una instancia, establecer la URL y el delegado, llamar a presentOptionsMenu. El controlador recopila automáticamente la lista de aplicaciones disponibles según el tipo de archivo.

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

Iniciar Preview en lugar del menú

Para mostrar el visor incorporado en lugar del menú Open In, use el método presentPreview. El controlador mostrará el documento a pantalla completa con capacidad de desplazamiento. El delegado debe implementar el método previewControllerForDocumentInteractionController, devolviendo un UIViewController para la visualización.

UIDocumentInteractionControllerDelegate y ciclo de vida

UIDocumentInteractionControllerDelegate gestiona la visualización y el cierre del menú y la vista previa. El delegado implementa métodos opcionales: documentInteractionControllerWillPresentOpenInMenu para la animación de aparición, documentInteractionControllerDidDismissOpenInMenu para la limpieza de recursos después del cierre del menú.

Un método importante para Preview es previewControllerForDocumentInteractionController, que debe devolver un UIViewController para mostrar el documento. Si el método no se implementa o devuelve nil, la vista previa no se iniciará. Normalmente se devuelve self o un UINavigationController que contiene self.

El controlador también admite el método documentInteractionController:didEndSendingToApplication, que se llama después de enviar exitosamente el archivo a otra aplicación. Esto permite limpiar archivos temporales o actualizar la interfaz después de regresar a la aplicación.

Diferencias con UIDocumentPickerViewController

UIDocumentInteractionController y UIDocumentPickerViewController resuelven diferentes tareas, aunque ambos trabajan con documentos. La diferencia principal: UIDocumentInteractionController transfiere un archivo existente a otra aplicación, mientras que UIDocumentPickerViewController selecciona un archivo de una fuente externa para la aplicación actual.

ParámetroUIDocumentInteractionControllerUIDocumentPickerViewController
PropósitoEnviar archivo a otra aplicaciónSeleccionar archivo de otra fuente
FuenteArchivo propio de la aplicaciónCualquier almacenamiento (iCloud, Archivos, terceros)
ModoCopia del archivo al destinatarioImportar o Exportar para la aplicación actual
InterfazMenú del sistema (Action Sheet)Navegador de archivos completo
RetornoNo devuelve un resultadoURL del archivo seleccionado a través del delegado

UIDocumentInteractionController no requiere un delegado para el funcionamiento básico — el menú se mostrará incluso sin implementar métodos. UIDocumentPickerViewController sin delegado es inútil — el resultado de la selección no se procesará. La elección de la API depende del escenario: enviar un archivo → UIDocumentInteractionController, recibir un archivo → UIDocumentPickerViewController.

Preguntas Frecuentes

¿Qué es UIDocumentInteractionController en iOS?

UIDocumentInteractionController es un controlador de UIKit para previsualizar documentos y transferir archivos entre aplicaciones mediante la función Open In y la vista previa incorporada.

¿Cómo abrir un archivo en otra aplicación usando UIDocumentInteractionController?

Cree una instancia, establezca la propiedad url al archivo de destino, especifique el delegado y llame a presentOptionsMenu. El sistema mostrará una lista de aplicaciones que admiten el tipo de archivo dado.

¿En qué se diferencia Preview de Quick Look?

UIDocumentInteractionController Preview es un visor incorporado para un solo documento con capacidades básicas. Quick Look (QLPreviewController) es un framework separado con soporte para visualización por lotes, extensiones y formatos de archivo adicionales.

¿Necesito implementar un delegado para UIDocumentInteractionController?

El delegado es opcional para el funcionamiento básico — el menú se mostrará sin él. El delegado es obligatorio solo para Preview (el método previewControllerForDocumentInteractionController) y para rastrear la finalización del envío de archivos.

¿En qué se diferencia UIDocumentInteractionController de UIDocumentPickerViewController?

UIDocumentInteractionController envía un archivo existente de la aplicación a otra aplicación. UIDocumentPickerViewController selecciona un archivo de una fuente externa para la aplicación actual. El primero es para enviar, el segundo para recibir.

Resumen

  • UIDocumentInteractionController — un controlador de iOS para ver y enviar archivos entre aplicaciones, disponible desde iOS 2.0.
  • Preview proporciona un visor incorporado para PDF, imágenes y documentos de oficina sin bibliotecas de terceros.
  • Open In copia el archivo en la sandbox de la aplicación seleccionada — los cambios no se devuelven a la aplicación original.
  • UIDocumentInteractionControllerDelegate gestiona animaciones, posición del menú y finalización del envío mediante métodos delegados.
  • presentOptionsMenu muestra un menú del sistema con las aplicaciones disponibles para el tipo de archivo dado.
  • UIActivityViewController es una alternativa más moderna para compartir archivos desde iOS 6.
  • Diferencia principal con UIDocumentPickerViewController: el primero envía un archivo desde la aplicación, el segundo selecciona un archivo hacia la aplicación.

Desarrollaremos una aplicación móvil llave en mano

IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.

Discutir el proyecto

Lea también