0

MBProgress HUD の使用中に UI が応答しないことがわかりました。デバイスでのデバッグ中に、「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];
        }

UI の無応答性について調べたところ、viewDidAppear メソッドで HUD を表示する必要があることがわかりましたが、ビューをサブビューとして追加しているため、viewDidAppear が呼び出されません。

アプリから HUD を削除すると、非常にうまく機能するため、HUD の使用方法が間違っているため、アプリが応答しないと確信しています。私はアプリケーションの多くの場所でこれを行いました。私が適用できる最善の解決策が必要です。

4

1 に答える 1