2012-07-16 13 views
6

Necesito bloquear la interfaz hasta que se complete la operación MBProgressHUD. Me he referido este hilo,MBProgressHUD Interfaz de bloque hasta que finalice la operación

Block interface until operation is done

De acuerdo con ello, debemos desactivar cada elemento individual que no trabajará para mí. Mi caso es que necesito deshabilitar al usuario al hacer clic en el botón Atrás. Intenté HUD.userInteractionEnabled = YES que deshabilita todos los controladores, excepto el botón Atrás. ¿Hay alguna forma de evitar que el usuario salga de ese controlador?

Saludos,
Dilshan

+1

Agregue HUD a la ventana en lugar de ver. – 0x8badf00d

Respuesta

11

si no encuentra una manera adecuada de hacerlo, puede ignorar toda la interacción del usuario por

[[UIApplication sharedApplication] beginIgnoringInteractionEvents]; 

.U puede detener esto por

[[UIApplication sharedApplication] endIgnoringInteractionEvents]; 
+0

No es la solución inactiva pero aún funciona. Gracias. – Dilshan

0

Así es como añado el MBProgressHUD a mi punto de vista y que bloquea todas las entradas hasta que se retira:

MBProgressHUD HUD = [[MBProgressHUD alloc] initWithView:self.view]; 
HUD.opacity = 0.7f; 

[self.view addSubview:HUD]; 

HUD.delegate = self; 
[HUD show:YES]; 

Nota:self es el controlador de vista de la HUD se está agregando a

+0

seguido de la misma manera. No funciona para esto. – Dilshan

11

Puedes añadir el MBProgressHUD a la vista del controlador de navegación de modo que también impide la interacción con el botón de retroceso:

[MBProgressHUD showHUDAddedTo:self.navigationController.view animated:YES]; 
+0

Esto sonó bien pero no funcionó para mí. – MattL

4

Si quiere un control en particular para habilitar cuando se muestra HUD, simplemente puede agregar la línea [self.view bringSubviewToFront:yourControl]; en su método showHUD como

-(void) showHUD:(UIView *)view 
{ 

    if (self.HUDdisplayed == NO) 
    { 
     self.HUDdisplayed = YES; 
     HUD = [[MBProgressHUD showHUDAddedTo:self.view animated:YES] retain]; 
    } 
// HUD.delegate = self; 
    [self.view bringSubviewToFront:HUD]; 
    [self.view bringSubviewToFront:yourControl]; 

} 
Cuestiones relacionadas