私のアプリでは、ヘルプ情報を表示するオーバーレイ スタイルを使用しています。ツールバーの情報ボタンをタップすると、UIButton
現在メイン ビューになっているビューの上に がオーバーレイされます。現在のナビゲーション バーとツールバーのさまざまなユーザー インターフェイス要素を指すヘルプ テキストと矢印を含む画像を描画します。
情報ボタンをもう一度タップするとUIButton
、 が破棄されますが、ユーザーがこのオーバーレイされたボタンに触れた場合は、それを取り除きたいと考えています。私のメインView Controllerを除いて、それは完璧に動作しUITableViewController
ます.
私がしていることは、を作成し、UIButton
それをサブビューとして追加することです。UITableView
これは、メイン ビュー コントローラーの唯一のビューです。次に、すべてのタッチ イベントを処理するように設定します。
[[self masterInfoView] addTarget:self action:@selector(toggleMasterInfo:) forControlEvents:UIControlEventAllTouchEvents];
はUIButton
現在カバーしているテーブル ビューと同じサイズであり、タップすると消えますが、スクロール ジェスチャ (その中でタップして指を押したままにする) を行うと、ボタンはこれをタッチ イベントとして認識しません。代わりに、基になるテーブル ビューがそれを処理し、その行をスクロールして、ボタンを一緒に移動します。
に移行する前にUIButton
、UIView
およびあらゆる種類のジェスチャ認識機能を使用して同じことを達成し、 のUIResponder
ようなイベントをキャプチャしましたtouchesBegan:withEvent:
。すべて妥当な結果が得られましたが、完璧なものはありませんでした。
これを機能させるのはそれほど難しいことではありません。何が欠けていますか?