显示时,MBProgressHUD阻止与uiscrollview的交互

时间:2012-05-14 20:52:13

标签: ios

我正在使用这个MBProgressHUD代码:

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

对于显示HUD的时间段,禁用与UIScrollview(包含从中调用的按钮)的交互。我无法点击其他按钮,或滚动UIScrollview。

为什么MBProgressHUD阻止我与UIScrollview的交互以及如何禁用它?

3 个答案:

答案 0 :(得分:17)

我正在使用MBProgressHUD版本0.5,只需设置:

HUD.userInteractionEnabled = NO;

这样就可以在父视图中进行用户交互。

答案 1 :(得分:0)

可能是因为按钮位于同一视图中,您尝试添加进度视图,当进度视图处于视图中时,此视图会阻止视图添加按钮的内容。

答案 2 :(得分:0)

MBPregressHUD阻止了以下方法中的交互

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

这行代码会阻止应用程序内的所有交互。 如果您确实希望保持交互,通过类级别BOOL驱动它,您可以将其称为isModal并决定是否要阻止交互

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

理想情况下,您应该创建一个新的'init'方法,将此BOOL作为参数。可能的签名可能是

- (id)initWithView:(UIView *)view isModal:(BOOL)modal;

然后在初始化视图后初始化此方法中的类级BOOL。 应该在'hide'方法中应用相同的条件。

快乐的编码......:)