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
.pageSheet
despido interactivo deshabilitado actúa así).UIViewController
contiene una nueva propiedad llamadaisModalInPresentation
que debe configurarsetrue
para evitar el despido interactivo..popover
etc.false
por defecto.Opcion 2:
UIAdaptivePresentationControllerDelegate
contiene un nuevo método llamadopresentationControllerShouldDismiss
.isModalInPresentation
propiedad está establecida enfalse
.fuente
isModalInPresentation
en 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 loUIImagePickerController
está 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.fullScreen
Y si está utilizando el guión gráfico, simplemente seleccione el segua y seleccione
Full Screen
delPresentation
menú desplegable.Si solo desea deshabilitar el descarte interactivo y mantener la
UIViewController
propiedad de conjunto de estilo de presentación nuevoisModalInPresentation
entrue
.fuente
La propiedad
isModalInPresentation
podrí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
isModalInPresentation
sugerencia de tantos usuarios.fuente