5

我正在使用这个 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 的交互,我该如何禁用它?

4

3 回答 3

17

我正在使用 MBProgressHUD 0.5 版并简单地设置:

HUD.userInteractionEnabled = NO;

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

于 2013-01-07T17:55:20.937 回答
0

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

于 2012-05-14T23:36:55.570 回答
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。在“隐藏”方法中应该应用相同的条件。

快乐的编码... :)

于 2012-10-18T05:55:47.390 回答