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 の使用方法が間違っているため、アプリが応答しないと確信しています。私はアプリケーションの多くの場所でこれを行いました。私が適用できる最善の解決策が必要です。