iOS 13 presenta un nuevo diseño de modalPresentationStyle .pageSheet(y su hermano .formSheet) para controladores de vista presentados modalmente ...
… Y podemos descartar estas hojas deslizando el controlador de vista presentado hacia abajo (descarte interactivo) . Aunque la nueva función "tirar para descartar" es bastante útil, es posible que no siempre sea deseable.
LA PREGUNTA: ¿Cómo podemos desactivar el despido interactivo? - Tenga en cuenta que mantenemos el mismo estilo de presentación.
ios
uiviewcontroller
uikit
modalviewcontroller
ios13
Jakub Truhlář
fuente
fuente


Respuestas:
Opción 1:
(El
.pageSheetdespido interactivo deshabilitado actúa así).UIViewControllercontiene una nueva propiedad llamadaisModalInPresentationque debe configurarsetruepara evitar el despido interactivo..popoveretc.falsepor defecto.Opcion 2:
UIAdaptivePresentationControllerDelegatecontiene un nuevo método llamadopresentationControllerShouldDismiss.isModalInPresentationpropiedad está establecida enfalse.fuente
isModalInPresentationen el controlador de navegación o en los controladores de vista individuales que se muestran en la pila de navegación. Este último le permite elegir pantalla por pantalla si es posible el despido interactivo. Cuidado con los controladores de búsqueda, tienen prioridad sobre el controlador de vista individual (pero no el controlador de navegación). Más información en la publicación de mi blog: medium.com/@hacknicity/…viewController.modalInPresentation = YES;UIImagePickerController? Para nosotros, parece que loUIImagePickerControllerestá ignorando y, por lo tanto, puede descartarse con el gesto de deslizar. Tal vez sea un error de iOS 13.presentationControllerShouldDismiss(_ presentationController: UIPresentationController)devuelve falso,presentationControllerDidAttemptToDismiss(_ presentationController: UIPresentationController)se llama para que pueda hacer cosas como agregar un diálogo de confirmación si el usuario ha ingresado datos.Si desea el mismo comportamiento que en la versión anterior de iOS (<iOS13) como la presentación del modelo en pantalla completa, simplemente configure el estilo de presentación de su controlador de vista de destino en
UIModalPresentationStyle.fullScreenY si está utilizando el guión gráfico, simplemente seleccione el segua y seleccione
Full ScreendelPresentationmenú desplegable.Si solo desea deshabilitar el descarte interactivo y mantener la
UIViewControllerpropiedad de conjunto de estilo de presentación nuevoisModalInPresentationentrue.fuente
La propiedad
isModalInPresentationpodría ayudar.De la documentación:
Puedes usarlo así:
fuente
Si está utilizando guiones gráficos para diseñar su interfaz de usuario, he encontrado que la mejor manera de deshabilitar este rechazo interactivo al usar un controlador de navegación es cambiar la presentación del controlador de navegación en el inspector de atributos de Automático a Pantalla completa. Todos los controladores de vista en su pila de navegación estarán en pantalla completa y el usuario no podrá descartarlos.
Inspector de atributos que muestra la opción de presentación para el controlador de navegación
fuente
Apple compartió un código de muestra al respecto en este enlace.
Utiliza la
isModalInPresentationsugerencia de tantos usuarios.fuente