Пользовательский интерфейс MBProgressHUD не отвечает

Я обнаружил, что мой пользовательский интерфейс не отвечает при использовании MBProgress HUD, а при отладке на устройстве он показывает мне сообщение «wait_fences не удалось получить ответ». Я думаю, что неправильно использую MBProgressHUD. может кто-нибудь, пожалуйста, скажите мне, как лучше всего использовать MBProgressHUD в следующем сценарии.

if (!self.detailController) {

            DetailViewController *detailVC = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
            detailVC.view.autoresizingMask = baseView.autoresizingMask; //(baseView Alerady added on xib for orientation purpose)
            self.detailController = detailVC;
            [detailVC release];
        }
        [self.view addSubview: self.detailController.view]; //Removing detailController.view before calling to this function.
        [self.detailController makeServiceCall];

        -(void)makeServiceCall
        {
            //HUD is class level variable 
            if (!HUD) {
                HUD = [[MBProgressHUD alloc] initWithView:self.view.window];    
                HUD.dimBackground = YES;
                [self.view.window addSubview:HUD];
                HUD.labelText = @"";
            }
            //Showing the HUD progress bar
            [HUD show:YES];

            //Async call code for service call, once connection end hiding the HUD. 
        }

        -(void)parsingFinished
        {
            //Data handling goes here..
            [HUD hide:YES];
        }

Я исследовал невосприимчивость пользовательского интерфейса и обнаружил, что HUD должен отображаться в методе viewDidAppear, но я добавляю представление как подпредставление, и из-за этого viewDidAppear не вызывается.

Если я удаляю HUD из своего приложения, оно работает очень хорошо, поэтому я уверен, что приложение не отвечает из-за неправильного использования HUD. Я сделал это во многих местах моего приложения. нужно лучшее решение, которое я могу применить.


person xmax    schedule 15.09.2012    source источник


Ответы (1)


MBProgressHUD блокирует взаимодействие с пользовательским интерфейсом, пока он виден. Я забываю, что это настраивается, но блокировка пользовательского интерфейса его родительского представления является его состоянием по умолчанию. Особенно, если вы добавляете его в окно вместо подпредставления.

person Alfie Hanssen    schedule 04.04.2013