【问题标题】:MBProgressHUD Block interface until operation is doneMBProgressHUD 阻塞界面直到操作完成
【发布时间】:2012-07-16 12:07:16
【问题描述】:

我需要阻塞接口直到MBProgressHUD 操作完成。我确实参考了这个帖子,

Block interface until operation is done

据此,我们应该禁用对我不起作用的每个单独的项目。我的情况是我需要禁止用户点击后退按钮。我确实尝试过HUD.userInteractionEnabled = YES,它禁用了除后退按钮之外的所有控制器。有什么方法可以阻止用户从该控制器中弹出?

问候,
迪尔山

【问题讨论】:

  • 将 HUD 添加到窗口而不是视图。

标签: 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 的视图控制器

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-07-30
          • 2010-12-04
          • 2015-05-15
          • 2010-09-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多