Отключено касание, когда отображается UIProgressBarHUD - PullRequest
0 голосов
/ 01 октября 2009

Я создал приложение, в котором я создаю 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 ]

3 голосов
/ 01 октября 2009

Вы можете отключить взаимодействие с пользователем изящным свойством с именем userInteractionsEnabled, которое определено для UIView. Так уж получилось, что UIWindow является подклассом UIView, мы можем легко отключить взаимодействие с пользователем для всего приложения.

anyViewInYouApp.window.userInteractionsEnabled = NO;

Или оставьте ссылку на окно, если хотите.

3 голосов
/ 14 декабря 2012

В 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
}
1 голос
/ 01 октября 2009

Как указано здесь , UIProgressHUD является частной. Вы не должны использовать это.

Существует библиотека , которая дает вам то, что вы ищете.

Позволяет пользователю не нажимать ничего во время обновления по вашему запросу.

0 голосов
/ 14 декабря 2012
UIWindow *win = [UIApplication sharedApplication].keyWindow;
[win setUserInteractionEnabled:NO];
...