2012-07-16 59 views
6

我需要阻止接口,直到MBProgressHUD操作完成。我是指這個線程,MBProgressHUD塊接口,直到完成操作

Block interface until operation is done

根據它,我們應該禁用哪些不會工作對我來說各個項目。我的情況是我需要禁用用戶點擊後退按鈕。我嘗試了HUD.userInteractionEnabled = YES,它禁用了除後退按鈕之外的所有控制器。有沒有阻止用戶從該控制器彈出的方法?

問候,
Dilshan

+1

將HUD添加到窗口而不是查看。 – 0x8badf00d 2012-07-16 12:10:55

回答

11

如果你找不到合適的方法來做到這一點,你可以忽略整個用戶交互

[[UIApplication sharedApplication] beginIgnoringInteractionEvents]; 

.U可以通過

[[UIApplication sharedApplication] endIgnoringInteractionEvents]; 
+0

不是閒置的解決方案,但仍然有效。謝謝。 – Dilshan 2012-07-16 15:26:56

0

這是我如何添加MBProgressHUD我的看法,並阻止所有輸入,直到它被刪除:

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

[self.view addSubview:HUD]; 

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

注:self是視圖控制器HUD正在添加到

+0

遵循相同的方式。沒有爲此工作。 – Dilshan 2012-07-16 15:24:49

11

阻止這個你可以在MBProgressHUD添加到導航控制器的視圖,使其還可以防止與後退按鈕的交互:

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

這聽起來很正確,但它並沒有爲我工作。 – MattL 2015-12-14 22:18:30

4

如果您希望特定的控件在HUD顯示時啓用,您可以簡單地在showHUD方法中將[self.view bringSubviewToFront:yourControl];行添加爲

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

}