禁用触摸时被示出UIProgressBarHUD(Disabled touch when UIPro

2019-10-30 01:31发布

我创建了那里我创建一个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];
}

任何帮助将长久地感谢! - 詹姆士

Answer 1:

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

有一个图书馆 ,让你你在找什么,但。

它可以让你保持用户从任何窃听,而它作为你的要求正在更新。



Answer 2:

您可以禁用与命名的漂亮属性的用户交互userInteractionsEnabled ,那就是为定义UIView 。 它只是恰巧, UIWindow是的一个子类UIView ,我们就可以很容易地禁用了整个应用程序的用户交互。

anyViewInYouApp.window.userInteractionsEnabled = NO;

或参考保持到窗口,如果你喜欢。



Answer 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
}


Answer 4:

UIWindow *win = [UIApplication sharedApplication].keyWindow;
[win setUserInteractionEnabled:NO];


文章来源: Disabled touch when UIProgressBarHUD is shown