私はこれについてSOを読んで読んだことがありますが、自分の状況に一致するものを見つけることができないようです.
アプリがすぐに Web サービス データを取得するため、ビューが表示されると MBProgressHUD が読み込まれます。私の問題は、HUD が表示されている間 (つまり、アプリがデータを取得している間)、ナビゲーション コントローラーの戻るボタンが応答しないことです。無限の待機の場合は、ユーザーがタップして閉じることができるようにする (または最悪の場合は戻るボタンを押すことができるようにする) ことを望んでいます。ビューが表示されるとすぐに実行されるコードは次のとおりです。
#ifdef __BLOCKS__
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.navigationController.view animated:YES];
hud.labelText = @"Loading";
hud.dimBackground = NO;
hud.userInteractionEnabled = YES;
dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
// Do a task in the background
NSString *strURL = @"http://WEBSERVICE_URL_HERE";
//All the usual stuff to get the data from the service in here
NSDictionary* responseDict = [json objectForKey:@"data"]; // Get the dictionary
NSArray* resultsArray = [responseDict objectForKey:@"key"];
// Hide the HUD in the main tread
dispatch_async(dispatch_get_main_queue(), ^{
for (NSDictionary* internalDict in resultsArray)
{
for (NSString *key in [internalDict allKeys])
{//Parse everything and display the results
}
}
[MBProgressHUD hideHUDForView:self.navigationController.view animated:YES];
});
});
#endif
JSON の解析に関する意味不明なことはすべて省きます。これはすべて正常に機能し、データが表示されて表示されると、HUD は消えます。タップでこれらすべてを停止し、(空白の)インターフェースに戻る方法をどのように有効にできますか?ジェスチャーレコグナイザー? MBProgressHUD クラスで設定しますか? とてもイライラ...
助けてくれてありがとう。長い投稿をお詫び申し上げます。そして私の醜いコードのために...