2012-05-14 19 views
5

sto usando questo codice MBProgressHUD:MBProgressHUD blocchi interazioni con un UIScrollView quando mostrati

MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES]; 
    hud.mode = MBProgressHUDModeText; 
    hud.removeFromSuperViewOnHide = YES; 
    [hud hide:YES afterDelay:1]; 

Per il periodo che l'HUD viene mostrato interazioni con un'UIScrollView (che contiene il pulsante questo viene chiamato da) sono Disabilitato. Non riesco a fare clic su altri pulsanti o scorrere UIScrollview.

Perché MBProgressHUD bloccando le mie interazioni con l'UIScrollView e come posso disattivarlo?

+0

MBProgressHUD viene utilizzato quando si eseguono attività che è necessario attendere. Si suppone che non è necessario interagire con nulla fino a quando il processo è finito. Ad ogni modo, stai licenziando il tuo compito su un altro thread ?. MBProgressHUD dovrebbe essere nel thread principale e l'attività che si desidera eseguire deve trovarsi su un altro thread. –

+0

E 'più semplice di quello, voglio solo mostrare un breve preavviso quando un pulsante è stato sfruttato. Ma le persone potrebbero voler cambiare i pulsanti prima che l'animazione scompaia. –

risposta

17

sto usando MBProgressHUD versione 0.5 e semplicemente impostare:

HUD.userInteractionEnabled = NO; 

Con questa interazione dell'utente consentire in vista padre.

0

forse perché i pulsanti sono nella stessa vista ciò che si sta tentando di aggiungere la vista progresso e quando la vista progresso è in vista questo blocchi vista il punto di vista che cosa sono aggiunti i pulsanti.

0

blocchi MBPregressHUD l'interazione nel metodo seguito

-(void)show:(BOOL)animated{ 
    [[UIApplication sharedApplication] beginIgnoringInteractionEvents]; 
    ... 
    ... 
    ... 
} 

Questa linea di blocchi di codice tutte le interazioni all'interno della vostra applicazione. Se si desidera mantenere le interazioni, guidare attraverso un BOOL livello di classe, si può chiamare isModal e decidere se si desidera bloccare le interazioni o no

-(void)show:(BOOL)animated{ 
     if(isModal){ 
     [[UIApplication sharedApplication] beginIgnoringInteractionEvents]; 
     } 
     ... 
     ... 
     ... 
    } 

Idealmente si dovrebbe creare un nuovo 'init' metodo per prendere questo BOOL come parametro. La possibile firma potrebbe essere

e quindi inizializzare il livello di classe BOOL all'interno di questo metodo dopo l'inizializzazione della vista. La stessa condizione deve essere applicato il metodo di 'nascondere'.

Felice di codifica ... :)

+1

Forse questa era una possibile soluzione per questo problema, tuttavia al momento di questo post, l'implementazione del metodo show di MBProgressHUD non chiama più 'beginIgnoringInteractionEvents', ma blocca comunque l'interfaccia utente. Credo che questo è perché MBProgressHUD è una sottoclasse di UIView che non implementa alcuna manipolazione metodi Event (cioè touchesBegan/spostato/Ended/annullato), conseguente rottura della catena responder. – Tafkadasoh

Problemi correlati