progressview bar ios cocoa-touch uiactivityindicatorview

ios - bar - Deshabilita todas las entradas mientras UIActivityIndicatorView gira



progress view swift 4 (3)

¿Cómo puedo deshabilitar todas las entradas mientras el UIActivityIndicatorView está girando?

Gracias


En Swift 3.0:

Para deshabilitar la interacción:

UIApplication.shared.beginIgnoringInteractionEvents()

Para restaurar la interacción:

UIApplication.shared.endIgnoringInteractionEvents()


Puede llamar a beginIgnoringInteractionEvents cuando inicie la ruleta

[[UIApplication sharedApplication] beginIgnoringInteractionEvents];

y endIgnoringInteractionEvents cuando lo detienes.

[[UIApplication sharedApplication] endIgnoringInteractionEvents];

Solo asegúrate de que tu código siempre llegue al punto en el que llamas endIgnoringInteractionEvents , de lo contrario, tu aplicación se congelará (desde el punto de vista de los usuarios).


Sólo una adición a la respuesta rokjarc. Aquí un ejemplo de watchdog para mantener viva la aplicación. Puedes llamar siempre con algún intervalo crítico, tal vez 10 seg. Y si necesita habilitar dentro de 10 segundos, simplemente llame al método "habilitar".

UIWindow * __weak mainWindow; - (void)disableGlobalUserInteractionForTimeInterval:(NSTimeInterval)interval { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ mainWindow = [[[UIApplication sharedApplication] windows] lastObject]; }); [mainWindow setUserInteractionEnabled:false]; if (interval > 0) { dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(interval * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [self enableGlobalUserInteraction]; }); } } - (void)enableGlobalUserInteraction { if (mainWindow) { [mainWindow setUserInteractionEnabled:true]; } }