【问题标题】:MBProgressHUD Block interface until operation is doneMBProgressHUD 阻塞界面直到操作完成
【发布时间】:2012-07-16 12:07:16
【问题描述】:
我需要阻塞接口直到MBProgressHUD 操作完成。我确实参考了这个帖子,
Block interface until operation is done
据此,我们应该禁用对我不起作用的每个单独的项目。我的情况是我需要禁止用户点击后退按钮。我确实尝试过HUD.userInteractionEnabled = YES,它禁用了除后退按钮之外的所有控制器。有什么方法可以阻止用户从该控制器中弹出?
问候,
迪尔山
【问题讨论】:
标签:
objective-c
iphone
ios5
ios4
mbprogresshud
【解决方案1】:
如果你没有找到合适的方法来做到这一点,你可以忽略整个用户交互
[[UIApplication sharedApplication] beginIgnoringInteractionEvents];
.U 可以通过
来阻止它
[[UIApplication sharedApplication] endIgnoringInteractionEvents];
【解决方案2】:
您可以将 MBProgressHUD 添加到导航控制器的视图中,这样它还可以防止与后退按钮的交互:
[MBProgressHUD showHUDAddedTo:self.navigationController.view animated:YES];
【解决方案3】:
如果您希望在显示 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];
}
【解决方案4】:
这就是我将MBProgressHUD 添加到我的视图的方式,它会阻止所有输入,直到它被删除:
MBProgressHUD HUD = [[MBProgressHUD alloc] initWithView:self.view];
HUD.opacity = 0.7f;
[self.view addSubview:HUD];
HUD.delegate = self;
[HUD show:YES];
注意:self 是要添加 HUD 的视图控制器