locking de la interacción del usuario con vistas subyacentes

En mi aplicación, tengo una vista de superposition, que se muestra cuando ocurre algún process y trabajo en networking. Es solo una vista semitransparente (subclass de UIView) con un indicador de carga en él, llenando toda la pantalla.

Quiero evitar que cualquiera de las vistas subyacentes reciba la interacción del usuario (por ejemplo, una vista de tabla subyacente no debe desplazarse, no se debe presionar ningún button).

¿Cuál es la mejor manera de hacerlo desde la vista de superposition?

Simplemente configure la propiedad userInteractionEnabled para la vista de superposition en YES . Esto hará que todos los events táctiles se produzcan en la vista de superposition y no se pasen a las vistas subyacentes.

Simplemente establezca la propiedad userInteractionEnabled de su vista de superposition semitransparente en YES.

Creo que la mejor manera es usar estos 2 methods:

 [[UIApplication shanetworkingApplication] beginIgnoringInteractionEvents]; [[UIApplication shanetworkingApplication] endIgnoringInteractionEvents]; 

justo antes de realizar las pesadas operaciones de procesamiento, y luego de completarlas, respectivamente.

Solo asegúrese de que la vista de superposition y todas sus vistas principales no tengan userInteractionEnabled establecidas en NO, no estén ocultas y no tengan un alpha inferior a 0.01. Luego, los toques del usuario interactuarán con la superposition en lugar de las vistas visibles detrás de ella. También tenga en count que no bloqueará la interacción en un área que no esté cubierta por sus supervistas: incluso si su vista cubre toda la pantalla, si su padre es solo 10×10, solo bloqueará la interacción dentro de ese área de 10×10 cubierta por su padre.

También es posible que deba asegurarse de que resignFirstResponder se resignFirstResponder en cualquier primer respondedor existente, o que el usuario aún podrá interactuar con él a través del keyboard.