リモート Web サービスからデータを要求しているときに、ナビゲーション バーに [戻る] ボタンがあるテーブルに MBProgressHUD を表示しています。
デフォルトでは、HUD はウィンドウ全体を覆い、タップが下層の UI 要素に到達するのを防ぎます。これを変更して、ナビゲーション バーがタップを受け取るようにしたいので、戻るボタンをタップすると、リクエストをキャンセルして HUD を閉じることができます。
MBProgressHUD 0.4 では、「initWithView:」メソッドを変更してこれを行います。
#if 1
// SPC 2012-02-25 don't cover navigation bar (so user can cancel)
CGRect _bounds = view.bounds;
_bounds.origin.y += 64.0;
_bounds.size.height -= 64.0;
id me = [self initWithFrame:_bounds];
#else
id me = [self initWithFrame:view.bounds];
#endif
これは期待どおりに機能します。
MBProgressHUD 0.5 で同じ変更を行います。
#if 1
// SPC 2013-03-15 don't cover navigation bar (so user can cancel)
CGRect _bounds = view.bounds;
_bounds.origin.y += 64.0;
_bounds.size.height -= 64.0;
return [self initWithFrame:_bounds];
#else
return [self initWithFrame:view.bounds];
#endif
しかし、HUD はまだウィンドウ全体をカバーしています。
両方のバージョンのコードを実行しましたが、この変更されたコードの後に行うことは、'addSubview:' を呼び出して、新しく作成された HUD をその親ビューになるものに追加することだけです。
0.5 で失敗する理由と、これを修正するために何ができるかについてのアイデアはありますか?