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];
}
}