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に対して定義されているという名前の気の利いたプロパティとのユーザーの対話を無効にすることができますUIViewUIWindowのサブクラスであることがたまたま、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

hereで指摘されているように、UIProgressHUD は非公開です。使用しないでください。

ただし、探しているものを提供するライブラリがあります。

要求どおりに更新している間、ユーザーが何もタップしないようにすることができます。

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