Deshabilitar la interacción del usuario de todas las vistas además de una

Estoy intentando simular un comportamiento de UIAlertView. Básicamente, quiero presentar una vista y deshabilitar la interacción del usuario de todas las demás vistas en la pantalla (además de la vista presentada). ¿Cómo iba a hacer esto?

Tu vista de alerta aparente debería constar de dos vistas. El primero es el tamaño de la pantalla y tiene userInteractionEnabled establecido en YES . Esto evita que los toques pasen a las vistas debajo. A continuación, agrega, como una subvista de esta vista, su window de alerta real, con los botones que desee, etc.

Puede contener ambos en una nueva UIWindow que puede establecer el windowLevel para asegurarse de que están encima de cualquier otra cosa en la pantalla.

También puede agregar un backgroundColor muy leve a la vista del tamaño de la pantalla que oscurecerá todo lo que hay detrás, si es apropiado para su interfaz.

Recomendaría agregar una vista (con la interacción del usuario deshabilitada) con background negro con un alfa de 0.3 a la window principal de las aplicaciones cada vez que muestre su alerta personalizada. Esto, además de prevenir la interacción del usuario, también agrega ese sutil efecto de oscurecimiento a la interfaz de usuario detrás de su vista de alerta personalizada.

Llame [view setUserInteractionEnabled:NO] en todas las vistas en las que desea desactivar la interacción del usuario. No olvide llamar a [view setUserInteractionEnabled:YES]; en ellos nuevamente antes de descartar su vista de alerta personalizada.