0

リモート 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 で失敗する理由と、これを修正するために何ができるかについてのアイデアはありますか?

4

1 に答える 1

0

huduserInteractionEnabledを に設定するだけNOで、hud はタッチ イベントをその基になるビューに渡します。

于 2013-12-11T06:35:02.660 に答える