2

コンテナー ビューを追加したアプリケーションの共通ビューを 1 つ作成しました。

これは紛らわしい構造であり、SO の非常に一般的な質問でもありますが、私は 1 日から立ち往生しています..

私の場合、階層は

ViewController's View -> (within that) commonview's container view -> (within that)I am adding one another view(base view) with two views.(view 1,view 2)

 [self.commonView.containerView addSubview:baseView];
 [baseView addSubview:view1];
 [baseView addSubview:view2];
 [self.view addSubview:self.commonView];

そのために、view1のボタンのクリックイベントを取得していますが、view2のボタンは取得していません。

userInteraction と他のすべての一般的なことを確認しました。今、私は何が間違っているのかわかりません。また、この構造はアプリケーションで既に使用されているため、変更することはできません。この問題を解決する必要があります。

4

3 に答える 3

2

Gesture を任意のビューに適用した場合はcancelsTouchesInView、ジェスチャーのプロパティを に変更してNOください。デフォルトではTRUEであるため、そのビュー内のボタンは、ジェスチャーが内側のビューのタッチをキャンセルするため、タッチされない場合があります。そうでない場合は、ボタンにジェスチャを適用します。これは、コントロールの階層が多数ある場合に発生する可能性があるためです。

于 2013-07-26T05:14:27.500 に答える
0

別のサブビュー(つまりビュー2)によって非表示になっているため、サブビュー(つまりビュー1)を前面に表示してみてください。

[self.view bringSubviewToFront:self.commonView.containerView ];最初はonly で試してください。

これが機能する場合は、それで問題ありません。それ以外の場合は、次のように両方を試してください

[self.view bringSubviewToFront:self.commonView.containerView ];
[self.view bringSubviewToFront:view1];

これがお役に立てば幸いです。

プログラミングを楽しもう!

于 2013-07-26T04:41:51.893 に答える
0

それぞれの順序で追加する必要があります。

最初に baseView1 と view2 を baseView に追加します

[baseView addSubview:view1];
[baseView addSubview:view2];

次にbaseViewをContainerViewに追加します

[self.commonView.containerView addSubview:baseView];

最後に mainView に commonView を追加します

[self.view addSubview:self.commonView];

ノート :-

ビューコントローラーを現在のビューコントローラーに追加する場合は、以下のコードを記述する必要があります。

[self addChildViewController: yourviewController];

次に、ボタンのクリックが機能します。

于 2013-07-26T05:21:03.683 に答える