es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo cambiar el tamaño de contenido preferido cuando se agrega UIPopoverPresentationControllerDelegate?

Quería obtener la devolución de llamada cuando la ventana emergente se cierra arrastrándola hacia abajo en iOS 13. Por esta razón, se agrega presentationController?.delegate (UIPopoverPresentationControllerDelegate). Sin embargo, una vez que se agrega este delegado e intento presentarlo usando addVC.modalPresentationStyle = .formSheet, ¿por qué la propiedad preferredContentSize no funciona? Sin cumplir con las devoluciones de llamada del delegado, no se activan, pero preferredContentSize funciona perfectamente. ¿Qué me he perdido?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Problema con la devolución de llamada de cierre de sobrepuesta y tamaño de contenido preferido en iOS 13

    Como experto en iOS especializado en iOS y Swift, entiendo que a veces usar un UIPopoverPresentationController para presentar vistas en iOS puede presentar algunos comportamientos inesperados, especialmente cuando se intenta añadir un comportamiento personalizado para la devolución de llamada al cerrar una vista de popover.

    En iOS 13, al intentar añadir una devolución de llamada para cuando se cierra el popover al arrastrarlo hacia abajo, se requiere agregar un delegado UIPopoverPresentationControllerDelegate al controlador de vista que está presentando el popover. Esto se puede hacer estableciendo la propiedad presentationController?.delegate en el controlador de vista que cumpla con el delegado.

    Sin embargo, una vez que se añade este delegado y se establece el estilo de presentación en .formSheet utilizando addVC.modalPresentationStyle, la propiedad preferredContentSize no funciona como se esperaba. Esto podría suponer un desafío para los desarrolladores que intentan activar el comportamiento de la devolución de llamada al cerrar el popover al tiempo que mantienen la capacidad de establecer el tamaño de contenido preferido del controlador de vista presentado.

    Para resolver este problema, es importante tener en cuenta que el estilo de presentación de popover no admite el tamaño de contenido preferido en iOS. En su lugar, los desarrolladores pueden utilizar la propiedad preferredContentSize para establecer el tamaño de la vista del controlador de vista presentado manualmente.

    Para habilitar tanto el comportamiento de devolución de llamada al cerrar el popover como el uso del tamaño de contenido preferido en el mismo controlador de vista, los desarrolladores pueden implementar un controlador de presentación personalizado que cumpla con UIAdaptivePresentationControllerDelegate. Este delegado permite a los desarrolladores anular el comportamiento predeterminado del controlador de presentación durante las transiciones y adaptarse a los cambios en la jerarquía de vistas.

    Al implementar un controlador de presentación personalizado, es posible añadir un comportamiento de cierre de popover personalizado al tiempo que se mantiene la capacidad de establecer el tamaño de contenido preferido del controlador de vista presentado.

    En general, al utilizar popovers en iOS 13, surgen ciertas complejidades al intentar personalizar su comportamiento más allá de la configuración predeterminada. Sin embargo, con un poco de conocimiento acerca de cómo utilizar delegados y controladores de presentación personalizados, cualquier desarrollador de iOS puede crear sus propios popovers personalizados que funcionen como se desee.

Comments are closed.