0

我创建了一个应用程序,我在其中创建了一个 UIProgressBarHUD 来显示正在加载的东西。我的问题是,如何禁用视图,以便在加载完成之前无法按下任何内容?

我试过设置:

[self.view setUserInterationEnabled:NO];

但是这不起作用:/

这是我用于添加 UIProgressHUD 的代码:

- (IBAction) showHUD:(id)sender
{
       //[self.view setUserInteractionEnabled:NO];

       UIProgressHUD *HUD = [[UIProgressHUD alloc]
initWithWindow:[[UIApplication sharedApplication] keyWindow]];
       [HUD setText:@"Loading…"];
       [HUD show:YES];

       [HUD performSelector:@selector(done) withObject:nil afterDelay:1.5];
       [HUD performSelector:@selector(setText:) withObject:@"Done!"
afterDelay:1.5];
       [HUD performSelector:@selector(hide) withObject:nil afterDelay:4.0];

       //[self.view setUserInteractionEnabled:YES];

       [HUD release];
}

任何帮助将不胜感激!- 詹姆士

4

4 回答 4

3

userInteractionsEnabled您可以使用为 定义的漂亮属性禁用用户交互UIView。恰好它UIWindow是 的子类UIView,我们可以轻松地禁用整个应用程序的用户交互。

anyViewInYouApp.window.userInteractionsEnabled = NO;

或者,如果您愿意,可以保留对窗口的引用。

于 2009-10-01T18:22:18.760 回答
3

在 MBProgressHUD.m

#define APPDELEGATE                         
(TMAppDelegate *)[[UIApplication sharedApplication]delegate]

- (void)show:(BOOL)animated 
{
    [[APPDELEGATE window] setUserInteractionEnabled:NO]; //use this line
}

- (void)hide:(BOOL)animated 
{  
    [[APPDELEGATE window] setUserInteractionEnabled:YES]; //use this line
}
于 2012-12-14T06:11:11.277 回答
1

正如这里所指出的,UIProgressHUD 是私有的。你不应该使用它。

有一个图书馆可以为您提供您正在寻找的东西。

它允许您在按照您的要求进行更新时阻止用户点击任何内容。

于 2009-10-01T17:25:53.237 回答
0
UIWindow *win = [UIApplication sharedApplication].keyWindow;
[win setUserInteractionEnabled:NO];
于 2012-12-14T06:15:08.017 回答