3

私のアプリでは、ヘルプ情報を表示するオーバーレイ スタイルを使用しています。ツールバーの情報ボタンをタップすると、UIButton現在メイン ビューになっているビューの上に がオーバーレイされます。現在のナビゲーション バーとツールバーのさまざまなユーザー インターフェイス要素を指すヘルプ テキストと矢印を含む画像を描画します。

情報ボタンをもう一度タップするとUIButton、 が破棄されますが、ユーザーがこのオーバーレイされたボタンに触れた場合は、それを取り除きたいと考えています。私のメインView Controllerを除いて、それは完璧に動作しUITableViewControllerます.

私がしていることは、を作成し、UIButtonそれをサブビューとして追加することです。UITableViewこれは、メイン ビュー コントローラーの唯一のビューです。次に、すべてのタッチ イベントを処理するように設定します。

[[self masterInfoView] addTarget:self action:@selector(toggleMasterInfo:) forControlEvents:UIControlEventAllTouchEvents];

UIButton現在カバーしているテーブル ビューと同じサイズであり、タップすると消えますが、スクロール ジェスチャ (その中でタップして指を押したままにする) を行うと、ボタンはこれをタッチ イベントとして認識しません。代わりに、基になるテーブル ビューがそれを処理し、その行をスクロールして、ボタンを一緒に移動します。

に移行する前にUIButtonUIViewおよびあらゆる種類のジェスチャ認識機能を使用して同じことを達成し、 のUIResponderようなイベントをキャプチャしましたtouchesBegan:withEvent:。すべて妥当な結果が得られましたが、完璧なものはありませんでした。

これを機能させるのはそれほど難しいことではありません。何が欠けていますか?

4

3 に答える 3

0

私の主な問題は、ヘルプ テキスト オーバーレイ ビューの下にあるテーブル ビューが、必要なくてもスクロールし続けるという事実によって引き起こされるため、これを使用することもできると判断しました。

[[self tableView] setScrollEnabled:NO];

UIButtonヘルプ オーバーレイ ビュー ( my ) がアクティブである限り。オーバーレイがなくなったら、テーブル ビューのスクロールを再度有効にします。

今のところ問題は解決していますが、スクロール イベントがオーバーレイを通過してテーブル ビューに入らないようにする方法はまだわかりません。おそらく、オーバーレイをテーブル ビューのサブビューとして追加したためです。将来これを回避するために、おそらくテーブル ビューを保持するコンテナー ビューを作成する必要があります (Mahmoud Fayez が何らかの方法で提案したように)。

于 2012-09-22T17:12:53.260 に答える
0

テーブル セルのサブビューにアクセスするには、次の手順に従います。

1.Use the TableView delegate function of "didSelectRowAtIndexPath".
2.By above function you can get the particular index path of tabelcell.
3.Create a local object of any subview using tag value like below.

 UIButton *mybutton=(UIButton *)[[tableView cellForRowAtIndexPath:indexPath] viewWithTag:222];
于 2013-01-23T13:02:52.510 に答える
0

私はそうしようとしていましたが、最終的に、セルをテーブル データ ソース デリゲートに返すときにアクションを設定する必要があることがわかりました。

[customButton addTarget:self action:@selector(/*functio name*/:) forControlEvents:/*event name*/]

;

これがうまくいくことを願っています。

于 2012-09-22T15:04:22.200 に答える